- 1、本文档共14页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
【原创】Qt自定义窗口部件
QtDesigner自定义窗口部件有两种方法:改进法(promotion)和插件法(plugin)
改进法
1、改进法之前,要先写好子类化QSpinBox后的HexspinBox.h和HexspinBox.cpp文件。把这两个文件拷贝到想要的项目中。
Cpp
Cpp代码
#ifndefHEXSPINBOX_H
#defineHEXSPINBOX_H
#includeQSpinBox
classQRegExpValidator;
classHexSpinBox:publicQSpinBox6. {
7.
Q_OBJECT
8.
9. public:
10.
HexSpinBox(QWidget*parent=0);
11.
12.protected:
13.
QValidator::Statevalidate(QStringtext,intpos)const;
14.
intvalueFromText(constQStringtext)const;
15.
QStringtextFromValue(intvalue)const;
16.
17.private:
18.
QRegExpValidator*validator;
19.};
20.
21.#endif
Cpp
Cpp代码
#includeQtGui
#includehexspinbox.h
HexSpinBox::HexSpinBox(QWidget*parent)
4.
:QSpinBox(parent)
5. {
6.
6.
setRange(0,255);
7.
validator=newQRegExpValidator(QRegExp([0-9A-Fa-f]{1,8}),this);
8. }
9.
10.QValidator::StateHexSpinBox::validate(QStringtext,intpos)const
11.{
12.
returnvalidator-validate(text,pos);
13.}
14.
15.intHexSpinBox::valueFromText(constQStringtext)const
16.{
17.
boolok;
18.
returntext.toInt(ok,16);
19.}
20.
21.QStringHexSpinBox::textFromValue(intvalue)const
22.{
23.
returnQString::number(value,16).toUpper();
24.}
2、在需要开发的项目中的窗口中,
1、用QtDesigner创建一个新的窗体main.ui,把控件箱里的QSpinBox添加到窗体中。
2、右击微调框,选择“Promoteto”上下文菜单。
3、在弹出的对话框中,类名处填写“HexSpinBox”,头文件填写“hexspinbox.h”
好了。在ui生成的包含有QSpinBox的控件文件中,ui的源代码里面多了一段
customwidgets
customwidget
classHSpinBox/class
extendsQSpinBox/extends
headerhspinbox.h/header
/customwidget
包含文件变为hexspinbox.h。在QtDesigner中,QSpinBox表示的控件为HexSpinBox,并且可以设置所有的QSpinBox的属性。
Cpp代码#includeQtGui/QTableWidget#include
Cpp代码
#includeQtGui/QTableWidget
#includeQtGui/QToolBar
#includeQtGui/QWidget
#includehspinbox.h5.
6. QT_BEGIN_NAMESPACE7.
8. classUi_QMainClass9. {
10.public:
11.
QWidget*centralWidget;
12.
QPushButton*pushButton;
13.
QTableWidget*tableWidget;
14.
QSpinBox*spinBox;
15.
HSpinBox*hspinBox;
升级法的缺点是不能在QtDesigner中设置自定义控件自己的特有属性,也不能够绘制自己。
这些问题可以用插件法解决。
插件法
VS中创建Qt4D
您可能关注的文档
- P银行青年员工离职倾向因素分析及应对策略研究.docx
- Q motion分析和总结最新分析和总结.docx
- q5参数分析和总结.docx
- Q235和Q235A和Q235B的区别分析和总结.docx
- Q235化学成分分析和总结.docx
- QC T 306-1999汽车动力转向控制阀总成台架试验方法.docx
- QC T 427-1999汽车用电源总开关技术条件.docx
- QC T 626-1999汽 车 玻 璃 升 降 器.docx
- QCEQP-013-01加速稳定性试验箱验证方案.docx
- QCn 29008.13-91汽车产品质量检验清 洁 度 评 定 方 法.docx
- 2024届湖南省醴陵市重点名校初中语文毕业考试模拟冲刺卷含解析.doc
- 2024届湖南省隆回县中考二模物理试题含解析.doc
- 2024届湖南省怀化市重点达标名校中考英语考试模拟冲刺卷含答案.doc
- 2024届湖南省益阳市赫山区十校联考最后物理试题含解析.doc
- 2024届湖南省岳阳市重点中学中考物理模拟预测题含解析.doc
- 2024届湖南省衡阳市八中学中考英语押题试卷含答案.doc
- 2024届湖南省益阳市名校中考猜题英语试卷含答案.doc
- 商业贸易与日常生活 同步练习 高三历史统编版(2019)选择性必修2一轮复习.docx
- 球表面积和体积市公开课金奖市赛课一等奖课件.pptx
- 班组建设管理规定细则.doc
文档评论(0)