QT自定义控件封装
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;
}