Qt自定义窗口部件剖析.docx

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Qt自定义窗口部件剖析

【原创】Qt自定义窗口部件QtDesigner自定义窗口部件有两种方法:改进法(promotion)和插件法(plugin)改进法1、改进法之前,要先写好子类化QSpinBox后的HexspinBox.h和HexspinBox.cpp文件。把这两个文件拷贝到想要的项目中。HexspinBox.hCpp代码??#ifndef?HEXSPINBOX_H??#define?HEXSPINBOX_H??#include?QSpinBox??class?QRegExpValidator;??class?HexSpinBox?:?public?QSpinBox??{??????Q_OBJECT????public:??????HexSpinBox(QWidget?*parent?=?0);????protected:??????QValidator::State?validate(QString?text,?int?pos)?const;??????int?valueFromText(const?QString?text)?const;??????QString?textFromValue(int?value)?const;????private:??????QRegExpValidator?*validator;??};????#endif???HexspinBox.cppCpp代码??#include?QtGui??#include?hexspinbox.h??HexSpinBox::HexSpinBox(QWidget?*parent)??????:?QSpinBox(parent)??{??????setRange(0,?255);??????validator?=?new?QRegExpValidator(QRegExp([0-9A-Fa-f]{1,8}),?this);??}????QValidator::State?HexSpinBox::validate(QString?text,?int?pos)?const??{??????return?validator-validate(text,?pos);??}????int?HexSpinBox::valueFromText(const?QString?text)?const??{??????bool?ok;??????return?text.toInt(ok,?16);??}????QString?HexSpinBox::textFromValue(int?value)?const??{??????return?QString::number(value,?16).toUpper();??}???2、在需要开发的项目中的窗口中,1、用Qt Designer创建一个新的窗体main.ui,把控件箱里的QSpinBox添加到窗体中。2、右击微调框,选择“Promote to ”上下文菜单。3、在弹出的对话框中,类名处填写“HexSpinBox”,头文件填写“hexspinbox.h”好了。在ui生成的包含有QSpinBox的控件文件中,ui的源代码里面多了一段customwidgets? customwidget? ?classHSpinBox/class? ?extendsQSpinBox/extends? ?headerhspinbox.h/header? /customwidget包含文件变为hexspinbox.h。在Qt Designer中,QSpinBox表示的控件为HexSpinBox,并且可以设置所有的QSpinBox的属性。可以在VS2008中编译一下main.ui文件,从ui_main.h源代码中可以知道,引入的控件是:Cpp代码??#include?QtGui/QTableWidget??#include?QtGui/QToolBar??#include?QtGui/QWidget??#include?hspinbox.h????QT_BEGIN_NAMESPACE????class?Ui_QMainClass??{??public:??????QWidget?*centralWidget;??????QPushButton?*pushButton;??????QTableWidget?*tableWidget;??????QSpinBox?*spinBox;??????HSpinBox?*hspinBox;???? ?升级法的缺点是不能在Qt Designer中设置自定义控件自己的特有属性,也不能够绘制自己。这些问题可以用插件法解决。插件法1.VS中创建Qt4 Design Plugin 工程,名称叫custom自动建立如下几个文件:自定义控件:cust

文档评论(0)

jiayou10 + 关注
实名认证
内容提供者

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

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档