QT自定义控件封装
1.概述
这篇文章介绍如何创建UI文件,通过自定义方式将两个控件联动起来,实现自定义功能。
2.创建UI文件
新建一个widget的普通项目,然后在项目名称上右键选择And New... 新建文件,然后选择QT 再选择Qt Designer Form Class

选择Widget 界面,点击下一步

给类起一个名字

点击下一步,点击完成。smallwidget.ui页面创建完成。

3.封装控件
1.添加控件
在smallwidget.ui页面添加 Spin box 和 horizontalSlider 两个控件。

2.提升为控件
将我们自定义的smallwidget.ui控件提升为widget.ui的部件,也就是将我们自己创建的文件作为子文件添加到父文件中。

操作步骤如下
首先查看smallWidget的类型是什么,这里显示是QWidget

打开widget.ui文件,然后添加一个和smallWidget一样的类型的控件,也就是widget

在widget控件上右键,选择Promote to 也就是提升为部件。

输入SmallWidget 类名称,点击 Global include ,点击Add,如下图将它提升为部件。

点击Promote,如下图

窗口右侧对象中变成了SmallWidget

2.自定义控件功能
在smallWidget.cpp 文件中将两个控件进行关联,实现一个控件改变数值,另一个控件跟随改变数值。
#include "smallwidget.h"
#include "ui_smallwidget.h"SmallWidget::SmallWidget(QWidget *parent) :QWidget(parent),ui(new Ui::SmallWidget)
{ui->setupUi(this);// QSpinbox移动,Qslider跟着移动void(QSpinBox:: *spSignal)(int) = &QSpinBox::valueChanged;connect(ui->spinBox, spSignal, ui->horizontalSlider, &QSlider::setValue);// Qslider移动,QSpinbox跟着移动connect(ui->horizontalSlider, &QSlider::valueChanged, ui->spinBox, &QSpinBox::setValue);}SmallWidget::~SmallWidget()
{delete ui;
}
