欢迎来到天天文库
浏览记录
ID:55089415
大小:153.08 KB
页数:14页
时间:2020-04-27
《Qt自定义窗口部件.docx》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、【原创】Qt自定义窗口部件QtDesigner自定义窗口部件有两种方法:改进法(promotion)和插件法(plugin)改进法1、改进法之前,要先写好子类化QSpinBox后的HexspinBox.h和HexspinBox.cpp文件。把这两个文件拷贝到想要的项目中。HexspinBox.hCpp代码 1.#ifndef HEXSPINBOX_H 2.#define HEXSPINBOX_H 3.#include 4.class QRegExpValidator; 5.class HexSpinBox : public QSpinBox 6
2、.{ 7. Q_OBJECT 8. 9.public: 10. HexSpinBox(QWidget *parent = 0); 11. 12.protected: 13. QValidator::State validate(QString &text, int &pos) const; 14. int valueFromText(const QString &text) const; 15. QString textFromValue(int value) const; 16. 17.private: 18. QR
3、egExpValidator *validator; 19.}; 20. 21.#endif HexspinBox.cppCpp代码 1.#include 2.#include "hexspinbox.h" 3.HexSpinBox::HexSpinBox(QWidget *parent) 4. : QSpinBox(parent) 5.{ 1. setRange(0, 255); 2. validator = new QRegExpValidator(QRegExp("[0-9A-Fa-f]{1,8}"), this)
4、; 3.} 4. 5.QValidator::State HexSpinBox::validate(QString &text, int &pos) const 6.{ 7. return validator->validate(text, pos); 8.} 9. 10.int HexSpinBox::valueFromText(const QString &text) const 11.{ 12. bool ok; 13. return text.toInt(&ok, 16); 14.} 15. 16.QString HexSp
5、inBox::textFromValue(int value) const 17.{ 18. return QString::number(value, 16).toUpper(); 19.} 2、在需要开发的项目中的窗口中,1、用QtDesigner创建一个新的窗体main.ui,把控件箱里的QSpinBox添加到窗体中。2、右击微调框,选择“Promoteto”上下文菜单。3、在弹出的对话框中,类名处填写“HexSpinBox”,头文件填写“hexspinbox.h”好了。在ui生成的包含有QSpinBox的控件文件中,ui的源代码里面多了一段6、widgets> HSpinBox QSpinBox hspinbox.h 包含文件变为"hexspinbox.h"。在QtDesigner中,QSpinBox表示的控件为HexSpinBox,并且可以设置所有的QSpinBox的属性。可以在VS2008中编译一下main.ui文件,从ui_main.h源代码中可以知道,引入的控件是:Cpp代码 1.#include 7、2.#include 3.#include 4.#include "hspinbox.h" 5. 6.QT_BEGIN_NAMESPACE 7. 8.class Ui_QMainClass 9.{ 10.public: 11. QWidget *centralWidget; 12. QPushButton *pushButton; 13. QTableWidget *tableWidge
6、widgets> HSpinBox QSpinBox hspinbox.h 包含文件变为"hexspinbox.h"。在QtDesigner中,QSpinBox表示的控件为HexSpinBox,并且可以设置所有的QSpinBox的属性。可以在VS2008中编译一下main.ui文件,从ui_main.h源代码中可以知道,引入的控件是:Cpp代码 1.#include
7、2.#include 3.#include 4.#include "hspinbox.h" 5. 6.QT_BEGIN_NAMESPACE 7. 8.class Ui_QMainClass 9.{ 10.public: 11. QWidget *centralWidget; 12. QPushButton *pushButton; 13. QTableWidget *tableWidge
此文档下载收益归作者所有