#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()
{
}
綜上所述:在創建對象的時候,一定要在頭文件中聲明,保證創建的是全局變量。防止知識創建了局部的變量;導致程序運行出現不了想要的結果。
