自定义控件如下图:拉动右侧的horizontalSlider左侧的spinBox也根之改变最大值为100,改变spinBox里面的数值,horizontalSlider也跟着改变,点击获取当前值,程序打印出spinBox里面的值,点击设置到一半,spinBox变到50,相应horizontalSlider也变化到中间位置
新建一个设计师界面
首先布局ui
这个是horizontalSlider和spinBox的布局
这个是窗口界面的简单布局,选中的是一个widget,到时候smallwidget里面的ui要放到这个里面
怎么把smallwidget放到widget里面呢
右键点击提升为
把smallwidget放入里面即可,然后添加即可
在smallwidget里面写一个全局函数,以供接下来去调用
然后在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);
}
void SmallWidget:: setNum(int num)
{
ui->spinBox->setValue(num);
}
int SmallWidget:: getNum()
{
return ui->spinBox->value();
}
SmallWidget::~SmallWidget()
{
delete ui;
}
在widget里面添加按钮的控制程序
#include "widget.h"
#include "ui_widget.h"
#include "QPushButton"
#include "QDebug"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
connect(ui->btn_get,&QPushButton::clicked,[=](){
qDebug()<<ui->widget->getNum();
});
connect(ui->btn_set,&QPushButton::clicked,[=](){
ui->widget->setNum(50);
});
}
Widget::~Widget()
{
delete ui;
}
OK,这就完啦!