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

聊城企业门户网站建设设计构建网站

聊城企业门户网站建设,设计构建网站,全网门户网站制做,简述上课网站建设所用的技术架构在Qt应用程序开发中#xff0c;经常会遇到需要自定义输入控件的需求。其中#xff0c;对于QDoubleSpinBox控件#xff0c;如果希望在点击时弹出一个自定义的软键盘#xff0c;以便用户输入数值#xff0c;并将输入的值设置给QDoubleSpinBox#xff0c;该如何实现呢#…在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 QDebugclass 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.hCustomKeyboard::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 % 31);}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_castQPushButton*(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.hclass 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 QDesktopWidgetCustomDoubleSpinBox::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.dnsts.com.cn/news/27827.html

相关文章:

  • 建设银行网银盾官方网站下载wordpress副标题标签
  • 南昌做网站费用百度xml网站地图
  • 做自己的购物网站网络市场调研
  • 网站策划书范文模板襄阳seo公司
  • 策划网站建设wordpress apk源码
  • 台州网站建设惠店深圳网站建设电话咨询
  • 网站模板网站wordpress博客类型文章)
  • 商洛免费做网站网站建设一般报价
  • 销量不高的网站怎么做网站页面设计特点
  • 通辽网站建设通辽网上怎么做网站赚钱
  • 张店网站制作龙岩论坛
  • 北京兼职网站建设好的版式设计网站
  • 个人性质网站重庆网站建设 沛宣
  • 建设银行网站可以查询存折吗一个网站的建设流程有哪些资料
  • php 创建网站开发岳阳手机网站制作
  • 北京大型广告公司有哪些爱站seo排名可以做哪些网站
  • 邯郸网站优化技巧为什么收不到自己网站
  • 一个网站需要多大的空间阿里云网站建设的功能
  • 宁波企业网站制作推荐免费的网页设计代码模板
  • django网站开发过程WordPress入门编辑器
  • 网站加图标网站icp备案申请流程
  • 上海轨道交通建设查询网站建站前端模板
  • 可信网站认证申请如何编写微信小程序代码
  • 这里是我做的网站网站模板开发
  • 网站设计制作托管维护google中文搜索引擎入口
  • 网站建站多少钱化妆品网站建设项目计划书
  • 宁波哪个公司建网站企业所得税率
  • 网站支付接口网站开发好还是app好
  • 手机网站智能管理系统吉林省高等级公路建设局 网站
  • 陕西建设网网站集群济南app开发制作