创建一个Widget之后,再进行新建如下设计师界面:
创建好了就是这样多了一个smallwidget.ui
假如我们需要将Spin Box和Horizontal Slider封装在一起
我们可以看到封装的小控件是一个QWidget类型,所以我们在主窗口也应该加入一个QWidget类型的窗口。(类型必须一致)
然后打开主窗口的Qwidget选择“提升为”,提升的类名称为SmallWidget
然后再点击添加,再点击“提升”
发现主窗口的类名变为SmallWidget了。然后运行一下就会出现刚才封装的控件。
如果一个主窗口需要几个进度条,那么再拉一个QWidget进行提升为就可以。
实际生活中,我们的滑块引动,左边的值也应该响应的变化,这时候我们只需要再刚才创建的smallWidget.h和cpp中进行操作即可。
实现左边动右边就动,右边动左边就动的代码,smallwidget.cpp代码为:
#include "smallwidget.h"
#include "ui_smallwidget.h"
SmallWidget::SmallWidget(QWidget *parent) :
QWidget(parent),
ui(new Ui::SmallWidget)
{
ui->setupUi(this);
//QSpinBox移动,QSlider跟着移动,valueChanged发生了重载不知道是int类型还是QString类型。所以我们可以写一个函数指针
void(QSpinBox::* spSignal)(int) = &QSpinBox::valueChanged;
connect(ui->spinBox,spSignal,ui->horizontalSlider,&QSlider::setValue);
//QSLider移动QSinBox移动:由于QSLider的valueChange()函数只有一个不会重载所以不需要定义函数指针
connect(ui->horizontalSlider,&QSlider::valueChanged,ui->spinBox,&QSpinBox::setValue);
}
SmallWidget::~SmallWidget()
{
delete ui;
}