【原创】Qt自定义窗口部件
QtDesigner自定义窗口部件有两种方法:改进法(promotion)和插件法(plugin)
改进法
1、改进法之前,要先写好子类化QSpinBox后的HexspinBox.h和HexspinBox.cpp文件。把这两个文件拷贝到想要的项目中。
HexspinBox.h
Cpp代码??
#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.cpp
Cpp代码??
#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中设置自定义
您可能关注的文档
- 0kV升压站电气设备调试.doc
- 0kV输电线路耐张串专用技术规范.doc
- 0m空心板梁预应力张拉计算书.doc
- 0m预制梁张拉施工.doc
- 0第一讲战略管理过程.ppt
- 0万吨经典啤酒厂课程设计.doc
- 4.阿里巴巴号资产支持项目计划风险评估报告.docx
- 4年中油大榭燃料油库检修工程作业计划书.doc
- 05级电子商务专业人才培养.doc
- 06Linux文件和目录管理.ppt
- 03-2 2025年度民主生活会征求意见座谈会主持词.docx
- 03-1 2025年度民主生活会主持讲话提纲.docx
- 02-1 会前学习-《县以上党和国家机关党员领导干部民主生活会若干规定》相关要求.docx
- 在2025年度民主生活会上的总结讲话三篇.docx
- 在2025年度民主生活会上的总结讲话三篇 (3).docx
- 市委宣传部2025年度民主生活会查摆问题整改方案两篇.docx
- 在市行政审批和政务信息管理局机关2026年全体干部政绩观教育大会上的党课讲稿.docx
- X市应急管理局2026年度安全生产监督检查计划.docx
- 2025年度民主生活会领导班子对照检查材料(五个带头)三篇.docx
- 2025年度民主生活会“五个带头”个人对照检查材料三篇.docx
原创力文档

文档评论(0)