一、自定义控件的创建:
1、在项目中添加一个设计师界面类:
创建好后,会自动生成一个 .h 文件、一个 .cpp 文件和一个 ui 界面文件,如下:
2、在新添加 设计师界面类的 ui 界面上拖几个控件:
在 ui 界面上拖一个 Widget 控件,然后在 Widget 控件里面拖一个 SpinBox 控件和一个 Slider 控件,
如下所示:Widget 控件采用 “水平布局”,整个窗口采用 “栅格布局”;
3、为 SpinBox 和 Slider 控件添加槽函数:
为 SpinBox 控件添加槽函数:右键选中的控件,选择 “转到槽…”:
然后在弹出的 “转到槽” 对话框中,选择需要处理的信号:
用同样的方法为 Slider 控件也添加一个处理 valueChanged 信号的槽函数;
然后在槽函数中添加代码如下:
// 处理 SpinBox 控件 valueChanged 信号的槽函数
void SmallWidget::on_spinBox_valueChanged(int value)
{
// 当 SpinBox 的值发生变化时,Slider 的值随之一起变化
ui->horizontalSlider->setValue(value);
}
// 处理 Slider 控件 valueChanged 信号的槽函数
void SmallWidget::on_horizontalSlider_valueChanged(int value)
{
// 当 Slider 的值发生变化时,SpinBox 的值也随之一起变化
ui->spinBox->setValue(value);
}
二、自定义控件的使用:
因为自定义控件(SmallWidget)是继承于 QWidget 的,所以在 ui 界面上使用 SmallWidget 自定义控件的时候需要先放一个 Widget 控件,然后在 Widget 上鼠标右键,选择“提升为…”,在 “提升窗口部件” 对话框中添加 SmallWidget 类,如下所示:
然后点击 ”添加“ 按钮,添加之后如下所示:
最后点击 “提升” 按钮即可。
已经提升之后的 Widget 在界面上没有显示为自定义控件,如下所示,不知道是什么原因,没找到解决办法!!!
但是在程序运行的时候,还是能够正常显示为自定义控件,如下所示:
由于前面提升控件的时候勾选了 ”全局包含“,所以后面再为 Widget 提升控件的时候,可以直接选择要提升的目标控件,如下所示: