個人對QT中的namespace Ui的理解

在Qt5開發及實例中,給出的第一個例子中有一點讓人很懵,通過自學和查看網上資料,最後終於自認爲搞明白了,現在向大家報告!

問題代碼:

#include <QDialog>

namespace Ui {
class Dialog;
}

class Dialog : public QDialog
{
    Q_OBJECT

public:
    explicit Dialog(QWidget *parent = 0);
    ~Dialog();

private slots:
    void on_countBtn_clicked();

private:
    Ui::Dialog *ui;
};

其中,在命名空間Ui中聲明的Dialog類在其後的定義中,定義了一個私有指針變量ui,這個ui在隨後的cpp文檔中有ui->areaLabel_2->setText(tempStr.setNum(area))的調用。對ui的成員變量是從何而來的很費解,有木有。網上有說的太複雜,看不懂,有一個其實說的挺對的,但是講得有點簡單,也感覺有點雲裏霧裏。後面經過研究,發現:class Dialog採用了多繼承的方法。namespace Ui中的class Dialog既繼承自QDialog.h中的class QDialog, 又繼承於Ui_Dialog.h中的class Ui_Dialog {}。其中,Ui_Dialog.h在dialog.cpp文件開頭被引用。

#include "dialog.h"
#include "ui_dialog.h"

在Ui_Dialog.h中,有

……
class Ui_Dialog
{
    ……
}

namespace Ui {
    class Dialog: public Ui_Dialog {};
} // namespace Ui

再有,就是關於命名空間使用的問題,想必大家看下下面這個鏈接就能明白了。C++命名空間

好了,到這裏各位就明白了吧。謝謝觀看!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章