Qt中新建类构造函数的初始化参数列表
使用Qt-creator自动生成一个窗体应用程序时会自动创建一个新的类,我的程序中名为MyDialog,类的定义为:
1 #ifndef MYDIALOG_H 2 #define MYDIALOG_H 3 4 #include <QDialog> 5 6 namespace Ui { 7 class MyDialog; 8 } 9 10 class MyDialog : public QDialog 11 { 12 Q_OBJECT 13 14 public: 15 explicit MyDialog(QWidget *parent = 0); 16 ~MyDialog(); 17 18 private: 19 Ui::MyDialog *ui; 20 }; 21 22 #endif // MYDIALOG_H
相应的构造函数为:
1 1 //构造函数 2 2 MyDialog::MyDialog(QWidget *parent) : 3 3 QDialog(parent), 4 4 ui(new Ui::MyDialog) 5 5 { 6 6 ui->setupUi(this); 7 }
其中,构造函数:MyDialog::MyDialog(QWidget *parent) : QDialog(parent),ui(new Ui::MyDialog){......}形式中,“::”前的MyDialog表示类名,“::”后的MyDialog为成员函数,其名称与类相同,表示该类的构造函数,(QWidget *parent)为该构造函数的参数。“:”之后的部分为构造函数的初始化参数列表,其中QDialog(parent)为派生类MyDialog显式调用父类QDialog的构造函数,并传参,调用顺序是先调用父类构造函数,再调用派生类的构造函数,若不写调用父类的默认构造函数。 ui(new Ui::MyDialog)表示使用类内初始值对ui进行初始化,这部分可以放到函数体中实现,成为:
1 MyDialog::MyDialog(QWidget *parent) : QDialog(parent) 2 { 3 ui = new Ui::MyDialog; 4 ui->setupUi(this); 5 }