自定义控件如下图:拉动右侧的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,这就完啦!