自定义控件封装
样例效果:
描述:
- 部件QSpinBox和QSlider组合,改变其中一个的值,另一个随之改变
- 添加按钮快速获取或设置组合的值
部件组合
- 新建项目,添加新建项Qt——>Qt设计师界面类——>选择界面模板(widget)——>命名类名,完成
2. 进入新添加模板的ui设计界面,向其中添加部件并布局
- 进入主窗口ui设计界面,添加widget部件点击右键——>提升为——>输入提升的类名称——>提升
利用信号和槽联系组合内的部件
在组合类的源文件中建立二者的connect联系
// QSpinBox的值变化,则QSlider随之变化
// QSpinBox::valueChanged有重构,直接添加到connect中编译器将无法判断该调用哪一个
void (QSpinBox:: * spSingal)(int) = &QSpinBox::valueChanged;
connect(ui->spinBox,spSingal,ui->horizontalSlider,&QSlider::setValue);
// QSlider划动,QSpinBox的值随之改变
connect(ui->horizontalSlider,&QSlider::valuChanged,ui->spinBox,&QSpinBox::setValue);
组合类提供改变值和获取值的接口
// 修改值
void SmallWidget::setNum(int num) {
ui->spinBox->setValue(num);
}
// 获取当前值
int SmallWidget::getNum() {
return ui->spinBox->value();
}
添加快捷按钮
主窗口中添加按钮,并将建立connect联系
// 点击按钮时获取组合部件当前的值
connect(ui->pushButton,&QPushButton::clicked,[=](){
qDebug() << ui->widget->getNum();
});
// 点击按钮时将组合部件值设置为50
connect(ui->pushButton_2,&QPushButton::clicked,[=](){
ui->widget->setNum(50);
});