Qt自定义组件方法
该案例要实现一个如下图组件,右侧进度条会随着SpinBox数值的改变而做出相应变化。功能简单,主要是通过一个简单例子掌握Qt组件的实现方法。
步骤1:UI设计器中,在需要放置自定义组件的位置放入Widget容器widge,并设置号Widget在UI界面的布局;
步骤2:如下如,添加新文件-->选择C++ Class,点击chose按钮,进入下一界面,输出Class name,选择Base class为QWidget,下一步-->完成。
步骤3:在myWidget.cpp类中添加如下代码:

1 //包含需要用到的组件 2 #include <QSpinBox> 3 #include <QProgressBar> 4 #include <QHBoxLayout> 5 6 //构造函数中添加如下 7 QSpinBox *spin = new QSpinBox(this); 8 QProgressBar *progress = new QProgressBar(this); 9 spin->setRange(0,100); 10 progress->setRange(0,100); 11 12 QHBoxLayout *hLayout = new QHBoxLayout(this); 13 hLayout->addWidget(spin); 14 hLayout->addWidget(progress); 15 16 connect(spin,SIGNAL(valueChanged(int)),progress,SLOT(setValue(int)));
步骤4:在UI设计界面,右键点击在步骤1中添加的Widget容器,弹出右键菜单,选择“提升为”弹出如下图窗口:
然后在提升的类名称中输入“myWidget”(步骤2中新添加类的名称,即自定义组件的对象名称),头文件自动补全,勾选全局包含,点击“添加”按钮,点击“提升”,在右侧组件属性窗口可以看出步骤1中添加的 widget组件的类名称变为myWidget,如下图:
编译运行软件效果:
以后在需要用到该自定义组件的地方,只需像步骤4中那样,右键菜单->提升为->选择“myWidget”即可。
可以使用该方法实现自定组件,对Qt提供的组件进行功能扩充或者将不同组件组成一个组件,实现组件功能的扩展。
最后,需要注意的是,被提升的组件和自定义组件必须为相同的基类,如该例中UI界面中被提升的widget组件基类和自定义组件基类都为QWidget类。