#include "mainwidget.h" #include <QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWidget w;//執行QApplication的構造函數,所以為了減少主函數的代碼量,將其他的子窗口放在其構造函數即可(就會自動的執行) w.show(); return a.exec(); }
在主程序中不停的添加代碼是不可行的,這是由於當一個界面中有一百個按鈕時,就要在主程序中創建100個對象,這樣的代碼可讀性不高,太難看了。
由以上的注釋內容可以得知,程序在執行時,會自動先執行構造函數, 不如將界面中的控件放在構造函數中,這樣就可以減少主程序代碼的數量,
#include "mainwidget.h" #include <QPushButton> MainWidget::MainWidget(QWidget *parent) : QWidget(parent) { QPushButton btn1; QPushButton btn2; btn1.setParent(this); btn1.setText("1111"); btn1.move(100,100); btn2.setParent(this); btn2.setText("22222"); } MainWidget::~MainWidget() { }
如果僅僅是在構造函數中創建了如上面的代碼的時候,當運行的時候會發現,界面中並沒有控件的顯示,這是因為僅僅在此構造函數中創建了對象以及他的屬性,相當於創建了一個臨時變量,當構造函數執行結束的時候,便會釋放,等於沒有創建。此時需要在構造函數的頭文件中添加如下所示的代碼,將其轉化為全局變量;
#ifndef MAINWIDGET_H #define MAINWIDGET_H #include <QWidget> #include <QPushButton> class MainWidget : public QWidget { Q_OBJECT public: MainWidget(QWidget *parent = 0); ~MainWidget(); private: QPushButton btn1; QPushButton btn2; }; #endif // MAINWIDGET_H
或者使用構造函數傳參的方式(利用指針)
#ifndef MAINWIDGET_H #define MAINWIDGET_H #include <QWidget> #include <QPushButton> class MainWidget : public QWidget { Q_OBJECT public: MainWidget(QWidget *parent = 0); ~MainWidget(); private: QPushButton btn1; QPushButton *btn2; }; #endif // MAINWIDGET_H
添加頭文件QPushButton,在文件中添加了
QPushButton btn1; QPushButton btn2;
所以在構造函數中就沒必要創建對象。只需要拿來使用即可;
#include "mainwidget.h" #include <QPushButton> MainWidget::MainWidget(QWidget *parent) : QWidget(parent) { // QPushButton btn1; // QPushButton btn2; btn1.setParent(this); btn1.setText("1111"); btn1.move(100,100); btn2.setParent(this); btn2.setText("22222"); } MainWidget::~MainWidget() { }
或者利用構造函數傳參的方式
#include "mainwidget.h" #include <QPushButton> MainWidget::MainWidget(QWidget *parent) : QWidget(parent) { // QPushButton btn1; // QPushButton btn2; btn1.setParent(this); btn1.setText("1111"); btn1.move(100,100); btn2 = new QPushButton(this);//指針沒有空間,是需要動態的對其進行空間的分配 btn2 ->setParent(this); btn2 ->setText("22222"); } MainWidget::~MainWidget() { }
綜上所述:在創建對象的時候,一定要在頭文件中聲明,保證創建的是全局變量。防止知識創建了局部的變量;導致程序運行出現不了想要的結果。