Qt自定义窗口部件.docx

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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

文档评论(0)

mph + 关注
官方认证
内容提供者

该用户很懒,什么也没介绍

认证主体上海谭台科技有限公司
IP属地上海
统一社会信用代码/组织机构代码
91310115MA7CY11Y3K

1亿VIP精品文档

相关文档