自定义控件封装:

1.添加新文件(设计师界面类),创建子页面 ,放自己想要的控件
2.在主页面中使用子控件 :新建一个widget-![在这里插入图片描述](https://img-blog.csdnimg.cn/95ed8015343e4c56a3914853950eff4c.png#pic_center)

-》右键提升为新的类名
3.在子控件中增加功能函数,在主页面中通过widget,也能正常使用

1.举例:主页面为mainwindow,设置的子控件为Form
QT:自定义控件(Connect使用,子控件连接)-LMLPHP

2.主界面
QT:自定义控件(Connect使用,子控件连接)-LMLPHP
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);//使用子控件封装的接口
    });

}

08-15 13:51