当前位置: 首页 > news >正文

destoon做的网站网站开发用什么写得比较好

destoon做的网站,网站开发用什么写得比较好,世界500强企业使命愿景价值观,电脑零基础培训班在Qt应用程序开发中,经常会遇到需要自定义输入控件的需求。其中,对于QDoubleSpinBox控件,如果希望在点击时弹出一个自定义的软键盘,以便用户输入数值,并将输入的值设置给QDoubleSpinBox,该如何实现呢&#…

在Qt应用程序开发中,经常会遇到需要自定义输入控件的需求。其中,对于QDoubleSpinBox控件,如果希望在点击时弹出一个自定义的软键盘,以便用户输入数值,并将输入的值设置给QDoubleSpinBox,该如何实现呢?

在本文中,我们将介绍如何使用Qt框架,结合自定义的软键盘,实现一个可以在QDoubleSpinBox控件下方弹出的数字输入解决方案。我们将从头开始构建这个功能,并逐步引导您完成实现过程。

首先,我们将创建一个名为CustomDoubleSpinBox的自定义控件,它是QDoubleSpinBox的子类。我们将重写focusInEvent函数,该函数在QDoubleSpinBox获取焦点时被调用。在这个函数中,我们将创建并显示我们自己设计的软键盘CustomKeyboard,并确保它在QDoubleSpinBox的下方弹出。

接着,我们将继续创建CustomKeyboard类,它是一个继承自QWidget的自定义控件。在CustomKeyboard中,我们将实现一个数字键盘,允许用户输入数字,并在确认后返回输入的数值。

#ifndef CUSTOMKEYBOARD_H
#define CUSTOMKEYBOARD_H#include <QObject>
#include <QWidget>
#include <QDebug>
#include <QLabel>
#include <QGridLayout>
#include <QPushButton>
#include <QDebug>class CustomKeyboard : public QWidget
{Q_OBJECTpublic:explicit CustomKeyboard(QWidget *parent = nullptr);double getValue() const;signals:void confirmed(double);private:QString currentValue;QLabel *m_pCurrentLab;private slots:void on_digitButton_clicked();void on_decimalButton_clicked();void on_backspaceButton_clicked();void on_clearButton_clicked();void on_confirmButton_clicked();void on_closeButton_clicked();};#endif // CUSTOMKEYBOARD_H

#include "customkeyboard.h"CustomKeyboard::CustomKeyboard(QWidget *parent) : QWidget(parent)
{this->setWindowFlag(Qt::FramelessWindowHint);QVBoxLayout *layout = new QVBoxLayout;currentValue = "";m_pCurrentLab = new QLabel();QGridLayout *gridLayout = new QGridLayout;gridLayout->addWidget(m_pCurrentLab,0,0,1, 3);m_pCurrentLab->setStyleSheet("color:black");for (int i = 0; i <= 9; ++i){QPushButton *digitButton = new QPushButton(QString::number(i));connect(digitButton, &QPushButton::clicked, this, &CustomKeyboard::on_digitButton_clicked);if(i == 9){gridLayout->addWidget(digitButton, 4, 1);}elsegridLayout->addWidget(digitButton, i / 3 +1, i % 3+1);}QPushButton *decimalButton = new QPushButton(".");connect(decimalButton, &QPushButton::clicked, this, &CustomKeyboard::on_decimalButton_clicked);gridLayout->addWidget(decimalButton, 4, 2);QPushButton *backspaceButton = new QPushButton("Backspace");connect(backspaceButton, &QPushButton::clicked, this, &CustomKeyboard::on_backspaceButton_clicked);gridLayout->addWidget(backspaceButton, 5, 2);QPushButton *clearButton = new QPushButton("Clear");connect(clearButton, &QPushButton::clicked, this, &CustomKeyboard::on_clearButton_clicked);gridLayout->addWidget(clearButton,4, 3);QPushButton *confirmButton = new QPushButton("Confirm");connect(confirmButton, &QPushButton::clicked, this, &CustomKeyboard::on_confirmButton_clicked);gridLayout->addWidget(confirmButton, 5, 1, 1, 1);QPushButton *closeButton = new QPushButton("Close");connect(closeButton, &QPushButton::clicked, this, &CustomKeyboard::on_closeButton_clicked);gridLayout->addWidget(closeButton, 5, 3, 1, 1);layout->addLayout(gridLayout);setLayout(layout);this->setStyleSheet("QLabel{font: 22px;color:white;}\QPushButton{background-color:rgb(42, 49, 66);border: 1px solid rgb(206,206,206);border-radius: 5px;font:18px;Min-width:112px;Max-width:112px;Min-height:35px;color:white}\QPushButton:hover{background-color:rgb(210,210,210);}\QPushButton:pressed{background-color:rgb(160,160,160);}");}double CustomKeyboard::getValue() const{return currentValue.toDouble();}void CustomKeyboard::on_digitButton_clicked(){QPushButton *clickedButton = qobject_cast<QPushButton*>(sender());currentValue += clickedButton->text();m_pCurrentLab->setText(currentValue);}void CustomKeyboard::on_decimalButton_clicked(){if (!currentValue.contains('.')){currentValue += '.';}m_pCurrentLab->setText(currentValue);}void CustomKeyboard::on_backspaceButton_clicked(){currentValue.chop(1);m_pCurrentLab->setText(currentValue);}void CustomKeyboard::on_clearButton_clicked(){currentValue = "0";m_pCurrentLab->setText(currentValue);}void CustomKeyboard::on_confirmButton_clicked(){emit confirmed(getValue());}void CustomKeyboard::on_closeButton_clicked(){this->close();this->deleteLater();}

在完成这两个自定义控件的设计后,我们将把它们组合在一起,实现自定义的QDoubleSpinBox软键盘功能。当用户点击QDoubleSpinBox控件时,我们的自定义软键盘将弹出,并在用户输入数字后自动设置给QDoubleSpinBox,使整个输入流程更加便捷和友好。

// customdoublespinbox.h#ifndef CUSTOMDOUBLESPINBOX_H
#define CUSTOMDOUBLESPINBOX_H#include <QDoubleSpinBox>
#include "customkeyboard.h"class CustomDoubleSpinBox : public QDoubleSpinBox
{Q_OBJECTpublic:explicit CustomDoubleSpinBox(QWidget *parent = nullptr);protected:void focusInEvent(QFocusEvent *event) override;private:CustomKeyboard *keyboard;
};#endif // CUSTOMDOUBLESPINBOX_H
// customdoublespinbox.cpp#include "customdoublespinbox.h"
#include <QFocusEvent>
#include <QApplication>
#include <QDesktopWidget>CustomDoubleSpinBox::CustomDoubleSpinBox(QWidget *parent) : QDoubleSpinBox(parent)
{// 初始化成员变量keyboard = nullptr;
}void CustomDoubleSpinBox::focusInEvent(QFocusEvent *event)
{// 在QDoubleSpinBox获取焦点时弹出软键盘if (keyboard == nullptr){// 获取主屏幕的尺寸QRect primaryScreenRect = QApplication::primaryScreen()->geometry();// 创建一个 CustomKeyboard 实例keyboard = new CustomKeyboard(this);connect(keyboard, &CustomKeyboard::confirmed, [this]() {// 从 CustomKeyboard 获取输入的值并设置给 QDoubleSpinBoxdouble value = this->valueFromText(QString::number(keyboard->getValue()));this->setValue(value);keyboard->deleteLater(); // 关闭软键盘});// 将 CustomKeyboard 设置为 QDoubleSpinBox 的特殊键盘this->setSpecialValueText(" ");this->setKeyboardTracking(false);// 获取 QDoubleSpinBox 在主窗口中的位置QPoint spinBoxPos = this->mapToGlobal(QPoint(0, this->height()));// 设置 CustomKeyboard 在 QDoubleSpinBox 下方弹出keyboard->move(spinBoxPos.x(), spinBoxPos.y());keyboard->show();}QDoubleSpinBox::focusInEvent(event);
}

通过本文的介绍和示例代码,您将学会如何在Qt应用程序中实现自定义的QDoubleSpinBox软键盘功能。这将为您的应用程序带来更好的用户体验,并增加交互性。如果您对此功能感兴趣,可以参考本文提供的示例代码,并将其应用于您自己的项目中。

 

希望本文对您有所帮助,并且能够在Qt应用程序开发中为您带来更多灵活、个性化的控件定制体验。如果您有任何问题或建议,欢迎在评论区留言,我们将竭诚为您解答。谢谢阅读!

http://www.yayakq.cn/news/438806/

相关文章:

  • 网站软文设计机加工外协网站
  • 福建省建设职业管理中心网站大学生网页制作成品模板
  • 注册网站用什么邮箱如何学建设网站
  • 免费网站模板做直播大秀的平台和网站
  • 网站建设服务合同交印花税吗机床网
  • 做门面商铺比较好的网站陕西省安康市建行 网站
  • 广州网站建设哪家比较好手工制作大全简单又漂亮
  • 开发直播平台网站wordpress 瀑布流主题
  • 佛山网站建设公司经营范围做网站填写主要品牌怎么填写
  • 网站每年空间域名费用及维护费wordpress数据库名和主机怎么填
  • 做办公家具在哪个网站推销好wordpress 主题 新闻_
  • 福州品牌网站建设公司wordpress如何搭建一个购物网站
  • 做数据结构基础的网站百度云搜索引擎入口手机版
  • 为了加强公司网站建设建设互联网地方垂直网站
  • 搭建wap网站沈阳seo
  • 西安巨久科技网站建设网站推广业务
  • 广告网站开发石家庄新闻综合频道节目表
  • aspcms 网站无法显示该页面做建站较好的网站
  • 宿迁市住房和城乡建设局网站wordpress注册没有界面
  • 网站备案在哪里备案产品logo设计
  • 徐州做网站管理的公司友链对网站seo有帮助吗
  • 做网站主流语言黑马程序员广州校区
  • 图片 套网站模板下载 迅雷下载 迅雷下载地址前台登录 wordpress
  • 网站如何备案icp备案做公开网站的步骤
  • 腾讯云可以做网站能答题做试卷的网站
  • 重庆企业网站排名优化黄石网站网站建设
  • 电子商务网站建设题库沧州网站群
  • 合肥网站制作软件商家在网站做淘宝客会给佣金吗
  • 摄影网站难做吗东莞做网站优化哪家好
  • 建设银行境外汇款申请书网站广州全网络营销