Qt中用戶界面的User Interface Compiler(uic)機制的相關說明

uic讀取由QtDesigner生成的XML格式的用戶界面定義文件(.ui文件),而後生成其對應的C++頭文件。html

      若界面文件爲ZZZ.ui,則對應生成的頭文件爲ui_ZZZ.h。默認狀況下:web

      ①基於QMainWindow的程序,會生成一個叫ui_mainwindow.h的頭文件函數

      ②基於QDialog的程序,會生成一個叫ui_dialog.h的頭文件ui

      ③基於QWidget的程序,會生成一個叫ui_widget.h的頭文件this

      由Qt Creator自動完成的工做有以下:spa

       (1)在生成的頭文件中,首先會定義一個叫Ui_XXX的類,其中XXX是主窗口的objectName。指針

      好比我將主窗口的objectName設爲masikkk,則頭文件中會定義類Ui_masikkkorm

      此類中有全部控件的聲明,以及setupUi(QMainWindow */QDialog */QWidget *)函數的定義。htm

      在setupUi()函數中,會定義控件的全部屬性和行爲。對象

      最後,會定義一個名爲Ui的命名空間,裏面聲明一個類masikkk,此類繼承自Ui_masikkk :

              namespace Ui {

                     class masikkk : public Ui_masikkk{};

              }

       (2)在主窗口的頭文件中,會聲明命名空間Ui :

              namespaceUi{

              classmasikkk;

              }

      而且在類的定義中聲明一個私有的Ui::masikkk類的指針 * ui:

              Ui::masikkk * ui;

      在構造函數實現時,會在參數列表中新生成一個Ui::masikkk類的對象賦給指針ui:

              ui(new Ui::masikkk)

      並在函數體內調用setupUi()函數,用主窗口的指針(this指針)做參數:

              ui -> setupUi(this);

      這樣就實現了爲程序加載界面。

      注意:若是你在Qt Designer中更改了主窗口的objectName,則ui文件生成的頭文件中也會相應自動修改,

               但在主窗口的頭文件和實現文件中,不會自動將類名修改成新的objectName,須要手動修改的地方有三個,

               在上文中我已分別用下劃線標出了,只需將這三個地方修改成主窗口的新的objectName就好了

相關文章
相關標籤/搜索