Options > Designer > Class Generation
.Embedding of the UI Class (UI Class嵌入方式)
– Aggregation as a pointer member (以指標成員方式聚合)
– Aggregation (聚合)
– Multiple inheritance (多重繼承)
這會影響”Add new..” > “Qt Designer Form Class”時,*.h / *.cpp裏面插入ui程式碼的方式。
.Aggregation as a pointer member (以指標成員方式聚合)
– QT Designer預設值。ui的取用方式是ui->xxx。打”->”總覺得比打”.”麻煩…。
– .h裏面是include <QWidget>,在.cpp才include ui_form.h。不像其它方法都是在.h裏面include ui_form.h
– 需要宣告namespace,麻煩。
– ui用完還得自己delete。
– 很囉嗦的一種方法,不知為啥要預設這種的。
———- form.h ———-
#include <QWidget>
namespace Ui {
class Form;
}
class Form : public QWidget {
public:
Form(QWidget *parent = 0);
~Form();
private:
Ui::Form *ui;
};
———-form.cpp———-
#include “form.h”
#include “ui_form.h”
Form::Form(QWidget *parent) : QWidget(parent), ui(new Ui::Form)
{
ui->setupUi(this);
}
Form::~Form()
{
delete ui;
}
.Aggregation (聚合)
– ui的取用方式是ui.xxx,用起來舒服。
– 宣告也不會很囉嗦。
———- form.h ———-
#include “ui_form.h”
class Form : public QWidget {
public:
Form(QWidget *parent = 0);
private:
Ui::Form ui;
};
———-form.cpp———-
#include “form.h”
Form::Form(QWidget *parent) : QWidget(parent){
ui.setupUi(this);
}
.Multiple inheritance (多重繼承)
– ui取用方式是xxx(直接以ui裏面物件名稱取用),容易出事…。
– 宣告方式簡單,不過繼承太多東西也是麻煩。
———- form.h ———-
#include “ui_form.h”
class Form : public QWidget, private Ui::Form {
public:
Form(QWidget *parent = 0);
};
———-form.cpp———-
#include “form.h”
Form::Form(QWidget *parent) : QWidget(parent){
setupUi(this);
}
結論:
所以還是比較習慣用Aggregation來作。
--
現在還在寫blog分享資訊的人越來越少,如果覺得文章對您有幫助,歡迎在底下留言,這樣我也比較有動力繼續寫下去,謝啦!
蛤?