Qt自定义窗口部件(共14页).docx
《Qt自定义窗口部件(共14页).docx》由会员分享,可在线阅读,更多相关《Qt自定义窗口部件(共14页).docx(14页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上QtDesigner自定义窗口部件有两种方法:改进法(promotion)和插件法(plugin)改进法1、改进法之前,要先写好子类化QSpinBox后的HexspinBox.h和HexspinBox.cpp文件。把这两个文件拷贝到想要的项目中。HexspinBox.hCpp代码1. #ifndefHEXSPINBOX_H2. #defineHEXSPINBOX_H3. #include4. classQRegExpValidator;5. classHexSpinBox:publicQSpinBox6. 7. Q_OBJECT8. 9. public:10. Hex
2、SpinBox(QWidget*parent=0);11. 12. protected:13. QValidator:Statevalidate(QString&text,int&pos)const;14. intvalueFromText(constQString&text)const;15. QStringtextFromValue(intvalue)const;16. 17. private:18. QRegExpValidator*validator;19. ;20. 21. #endifHexspinBox.cppCpp代码1. #include2. #includehexspinb
3、ox.h3. HexSpinBox:HexSpinBox(QWidget*parent)4. :QSpinBox(parent)5. 6. setRange(0,255);7. validator=newQRegExpValidator(QRegExp(0-9A-Fa-f1,8),this);8. 9. 10. QValidator:StateHexSpinBox:validate(QString&text,int&pos)const11. 12. returnvalidator-validate(text,pos);13. 14. 15. intHexSpinBox:valueFromTex
4、t(constQString&text)const16. 17. boolok;18. returntext.toInt(&ok,16);19. 20. 21. QStringHexSpinBox:textFromValue(intvalue)const22. 23. returnQString:number(value,16).toUpper();24. 2、在需要开发的项目中的窗口中,1、用Qt Designer创建一个新的窗体main.ui,把控件箱里的QSpinBox添加到窗体中。2、右击微调框,选择“Promote to ”上下文菜单。3、在弹出的对话框中,类名处填写“HexSpin
5、Box”,头文件填写“hexspinbox.h”好了。在ui生成的包含有QSpinBox的控件文件中,ui的源代码里面多了一段 HSpinBox QSpinBox hspinbox.h 包含文件变为hexspinbox.h。在Qt Designer中,QSpinBox表示的控件为HexSpinBox,并且可以设置所有的QSpinBox的属性。可以在VS2008中编译一下main.ui文件,从ui_main.h源代码中可以知道,引入的控件是:Cpp代码1. #include2. #include3. #include4. #includehspinbox.h5. 6. QT_BEGIN_NAME
6、SPACE7. 8. classUi_QMainClass9. 10. public:11. QWidget*centralWidget;12. QPushButton*pushButton;13. QTableWidget*tableWidget;14. QSpinBox*spinBox;15. HSpinBox*hspinBox; 升级法的缺点是不能在Qt Designer中设置自定义控件自己的特有属性,也不能够绘制自己。这些问题可以用插件法解决。插件法1.VS中创建Qt4 Design Plugin 工程 ,名称叫custom自动建立如下几个文件:自定义控件:custom.h,custo
7、m.cpp插件:customplugin.h,customplugin.cpp源代码如下:custom.hCpp代码1. #ifndefCUSTOM_H2. #defineCUSTOM_H3. #include4. #includeui_test.h5. classcustom:publicQWidget6. 7. Q_OBJECT8. public:9. custom(QWidget*parent=0);10. custom();11. private:12. Ui:Formui;13. ;14. 15. #endif/CUSTOM_Hcustom.cppCpp代码1. #includecu
8、stom.h2. 3. custom:custom(QWidget*parent)4. :QWidget(parent)5. 6. ui.setupUi(this);7. 8. 9. custom:custom()10. 11. 12. customplugin.hCpp代码1. #ifndefCUSTOMPLUGIN_H2. #defineCUSTOMPLUGIN_H3. 4. #include5. 6. classcustomPlugin:publicQObject,publicQDesignerCustomWidgetInterface7. 8. Q_OBJECT9. Q_INTERFA
9、CES(QDesignerCustomWidgetInterface)10. 11. public:12. customPlugin(QObject*parent=0);13. 14. boolisContainer()const;15. boolisInitialized()const;16. QIconicon()const;17. QStringdomXml()const;18. QStringgroup()const;19. QStringincludeFile()const;20. QStringname()const;21. QStringtoolTip()const;22. QS
10、tringwhatsThis()const;23. QWidget*createWidget(QWidget*parent);24. voidinitialize(QDesignerFormEditorInterface*core);25. 26. private:27. boolinitialized;28. ;29. 30. #endif/CUSTOMPLUGIN_Hcustomplugin.cppCpp代码1. #includecustom.h2. #include3. #includecustomplugin.h4. customPlugin:customPlugin(QObject*
11、parent)5. :QObject(parent)6. 7. initialized=false;8. 9. 10. voidcustomPlugin:initialize(QDesignerFormEditorInterface*/*core*/)11. 12. if(initialized)13. return;14. initialized=true;15. 16. 17. boolcustomPlugin:isInitialized()const18. 19. returninitialized;20. 21. 22. QWidget*customPlugin:createWidge
12、t(QWidget*parent)23. 24. returnnewcustom(parent);25. 26. 27. QStringcustomPlugin:name()const28. 29. returncustom;30. 31. 32. QStringcustomPlugin:group()const33. 34. returnMyPlugins;35. 36. 37. QIconcustomPlugin:icon()const38. 39. returnQIcon();40. 41. 42. QStringcustomPlugin:toolTip()const43. 44. re
13、turnQString();45. 46. 47. QStringcustomPlugin:whatsThis()const48. 49. returnQString();50. 51. 52. boolcustomPlugin:isContainer()const53. 54. returnfalse;55. 56. 57. QStringcustomPlugin:domXml()const58. 59. returnn60. n61. n62. 0n63. 0n64. 100n65. 100n66. n67. n68. n;69. 70. 71. QStringcustomPlugin:i
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Qt 自定义 窗口 部件 14
限制150内