自定義控件封裝:
1.添加新文件(設計師界面類),創建子頁面 ,放自己想要的控件
2.在主頁面中使用子控件 :新建一個widget-
-》右鍵提升為新的類名
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);//使用子控件封裝的接口});}