自定义控件
可以使用如下的方式创建自定义控件:
创建出来的类为QWidget,同时具备完整的cpp、h文件和ui界面、以及在SmallWidget中添加的控件:
设置完成后,就可以看到这个控件成为了SmallWidget,同时在其控件中编辑的所有基本控件、方法等都会同样的实例化。
这里我们的需求是将QSlider和QSpinBox关联,同时通过两个按钮分别实现获取数值和设置数值的功能,首先在SmallWidget中创建连接这两个空间的槽函数:
// 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);
在widget中,设置两个按钮的槽函数:
connect(ui->getBtn, &QPushButton::clicked, [=](){qDebug() << ui->widget->getNum();
});connect(ui->setBtn, &QPushButton::clicked, [=](){ui->widget->setNum(50);
});
由于在widget中,获取到SmallWidget中的空间比较困难,所以在SmallWidget中定义了两个函数getNum和setNum来分别对功能进行封装以供widget调用,他们的实现方法如下:
void SmallWidget::setNum(int num){ui->spinBox->setValue(num);
}int SmallWidget::getNum(){return ui->spinBox->value();
}