Qt “即畫即得”界面設計方法的粗淺理解

在Qt中有如同其他的IDE一樣的“即畫即得”的界面設計方式,對其設計的原理,我的簡單的理解如下:

1.編譯器爲程序員所設計的ui文件創建一個類,
class Ui_MainWindow
{
  private:
    程序中用到的自定義的相關的組件也就是你所添加的組件等
    QLabel *label;
     ...

  public:
      Ui_MainWindow():
               label(new label),
                ...

         {
                ...
       }



     //具體的Ui設計函數
    setupUi(QMainWindow *mainWindow)
    {
            //設置自定義組件(控件)的屬性
            label->text()=tr("light");
         ...
    }
};

2.建立一個命名空間,其中聲明一個類,該類從上述Ui_MainWindow 
類派生而來。

namespace Ui{
   class MainWindow:public Ui_MainWindow{};
}
以上兩段代碼定義在同一個頭文件ui_mainwindow.h

3.在程序中定義另一個類,這個類派生於QMainWindow,並且擁有一個上面頭文
ui_mainwindow.h
Ui::MainWindow類的指針(私有成員變量),在這個類的構
造函數中利用Ui::MainWindow
setupUi()成員函數對該類進行初始化。

//聲明ui_mainwindow.h中的命名空間Ui
namespace Ui{
   class MainWindow;
}

class MainWindow:public QMainWindow          //@1
{
private:
             Ui::MainWindow *ui;

pulbic:
   MainWindow(QMainWndow *mainWindow):
             QMainWindow(mainWindow),
             ui(new Ui::MainWindow)
   {
             ui->setupUi(this);
                    //其他的初始化的操作
   }

   //一些其他的成員
    ...
};


4.這樣的設計之後就可以直接通過建立@1處的MainWindow的對象,而得到
“即畫即得”的設計界面並可在該類中添加一些其他的功能了,比如改變組件
的屬性和行爲等等。

int main(int argc,char *argv[])
{
   QApplication app(argc,argv);
   
   MainWindow *mainwindow=new MainWindow();
   mainwindow->show();
}

剛接觸QT不久,以上是我的一些粗淺的理解,肯定有錯誤的地方,請各路大神指正!大笑
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章