自定义控件封装
实现:spinBox和HorizontalSlider的同步,即左边数字增加,右边自动右移,或者右边右移左边数字自动增加
1.添加新文件
这样就会得到.cpp,.h,.ui的文件
2.ui中设计控件
2.1在SmallWidget.ui中添加QSpinBox和QSlider两个控件
先分别将这两个控件拖拽到smallWidget.ui界面中,再对这两个控件进行水平布局
2.2在widget中使用自定义控件
2.2.1在widget.ui界面中增加一个widget控件
这时运行我们发现弹出的窗口什么都没有。
2.2.2将smallWidget提升到widget中
点击“提升为”-点击“添加”-点击“提升”
这里选择全局包含可以方便后续添加的控件的提升
例如:再增加一个widget可以直接提升为SmallWidget
现在运行就可以看到在smallWidget.ui界面的内容了
3.实现功能
改变数字,滑动条跟着移动,信号槽监听
代码:
void(QSpinBox::*spSignal)(int)=&QSpinBox::valueChanged;
connect(ui->spinBox,&QSpinBox::valueChanged,ui->horizontalSlider,&QSlider::setValue);
实现了右边变化左边移动,但是左边移动右边没有变化,这时需要再增加一个连接
代码:
connect(ui->horizontalSlider,&QSlider::valueChanged,ui->spinBox,&QSpinBox::setValue);
4.提供对外接口
增加两个按钮
修改按钮的objectName
4.1两个接口
smallwidget.h代码:
//设置数字
void setNum(int num);
//获取数字
int getNum();
smallwidget.cpp代码:
//设置数字
void SmallWidget::setNum(int num)
{
ui->spinBox->setValue(num);
}
//获取数字
int SmallWidget::getNum()
{
return ui->spinBox->value();
}
4.2实现
widget.cpp获取:
connect(ui->btn_get,&QPushButton::clicked,[=](){
qDebug()<<ui->widget->getNum();
});
设置:
connect(ui->btn_set,&QPushButton::clicked,[=](){
ui->widget->setNum(50);
});