自定义控件封装:
1.添加新文件(设计师界面类),创建子页面 ,放自己想要的控件
2.在主页面中使用子控件 :新建一个widget-![在这里插入图片描述](https://img-blog.csdnimg.cn/95ed8015343e4c56a3914853950eff4c.png#pic_center)
-》右键提升为新的类名
3.在子控件中增加功能函数,在主页面中通过widget,也能正常使用
1.举例:主页面为mainwindow,设置的子控件为Form
2.主界面
3.子控件中需要实现:QSpinBox移动 QSlider跟着移动,QSlider移动 QSpinBox数字跟着改变
Form::Form(QWidget *parent) :QWidget(parent),ui(new Ui::Form)
{ui->setupUi(this);//新建一个子页面,可以封装自己想要的控件//QSpinBox移动 QSlider跟着移动//connect(ui->spinBox,&QSpinBox::valueChanged,ui->horizontalSlider,&QSlider::setValue);//有重载,会报错,需要用下面的方式传入参数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 Form::setNum(int num)
{ui->horizontalSlider->setValue(num);ui->spinBox->setValue(num);
}int Form::getNum()
{return ui->spinBox->value();
}
主界面通过按钮调用接口:
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);//自定义控件connect(ui->pushButton_getNum,&QPushButton::clicked,[=](){qDebug()<<ui->widget->getNum(); //使用子控件封装的接口});connect(ui->pushButton_setNum,&QPushButton::clicked,[=](){ui->widget->setNum(50);//使用子控件封装的接口});}