一 。沒有使用general form? 和? 使用 general form 后,file層面和代碼層面的不同比較
file層面的不同
代碼層面的不同,
在 使用了general form之后,在主界面的構造方法中,使用ui->setupUi(this),就完成了所有UI的處理。
而之前我們的沒有使用general form的時候,需要自己通過寫代碼一步一步的完成。
比較多出來的file 以及 代碼層面的不同 后的 疑問:
在沒有使用general form時,我們的代碼生成是使用了一系列函數生成的,那么是不是?ui->setupUi(this);的內部也是和我們使用一系列函數差不多呢?
驗證:
1.我們先來看多出來的mainwindow.ui是個啥?
在QT Creator中雙擊?mainwindow.ui,看到會跳轉到一個可以操作的UI界面
使用 UE 打開?mainwindow.ui,可以看到是一個xml格式的文件
?結論:mainwindow.ui是一個xml的文件。該文件中用xml格式記錄了當前mainwindow中的組件。QT Creator在打開這個xml的時候,做了事情,將xml文件變成了可視化的UI。如果我們通過可視化UI,給里面的增添改UI,然后QT Creator會將我們的操作變成xml文件。
驗證QT Creator 將開發者可視化UI的操作變成xml實驗:
之前界面和xml是這樣:
我們往界面上通過可視化UI 添加一個 qpushbutton,保存后,可以看到xml文件多了一些東西
2. 那么這個 ui->setupUi(this)是干啥的呢?
我們按照以往的經驗,在?ui->setupUi(this) 這一行上,按住ctrl+鼠標左鍵,看一下這一行代碼跳轉到哪里?--結果跳出來error,
這個error的意思是:我們找不到ui_mainwindows.h這個文件。或者沒有權限打開這個文件。該文件是在這個目錄下:
D:\code_qt\build-004qtUIstudy-Desktop_Qt_5_14_2_MinGW_32_bit-Debug\ui_mainwindow.h
那我們在磁盤里面找一下這個文件。發現確實沒有這個文件。
我們再來看一下給出的error信息 路徑是在
D:\code_qt\build-004qtUIstudy-Desktop_Qt_5_14_2_MinGW_32_bit-Debug\ui_mainwindow.h
這時候就想到了,這個應該是 項目build 之后生成的吧,于是查看了一下該項目的配置,果然是在D:\code_qt\build-004qtUIstudy-Desktop_Qt_5_14_2_MinGW_32_bit-Debug下面,也就是我們需要構建之后,才會生成?ui_mainwindow.h這個文件。
構建此項目
構建完成后,發現就生成了這個目錄了。
在QT Creator 中 打開ui_mainwindow.h文件查看,還是ctrl+鼠標左鍵打開。為什么不用UE直接打開呢?因為在 QT Creator 中打開代碼有關聯性,方便查看。我們終于看到了熟悉的畫面,和我們不使用general form時候的代碼。
二 使用general form 后,QT 幫我們到底做了什么 的回答
1.QT Creator 提供了可視化的UI,方便開發者增刪改UI,
2.改動的UI,QTCreator 會變成本質上是xml的 xxx.ui文件
3.然后QT 會在build 的過程中,將 xxx.ui文件變成ui_xxx.h文件。而這個?ui_xxx.h 文件并不是.h文件,實際上也含有.cpp的內容。
總結
? ? ? ? ? ? ? ? 通過QT build 的過程
xxx.ui--------------------------------------> 變成 最終的?ui_xxx.h 文件
在代碼中 通過?ui->setupUi(this); 這一行代碼 加載?ui_xxx.h,完成 UI的創建。
好處1:
開發者可以通過可視化UI ,實現自己想要的UI界面。QT 幫忙轉換成代碼,最終通過ui->setupUi(this)加載這些代碼生成UI。
?好處2:
開發者可以通過 查看這些可視化UI的最終代碼,學習在代碼層面實現,而不是借助可視化UI工具。
另一個問題:既然QT給了我們可視化UI的界面,為什么還要在第一章學習用代碼生成UI呢?這是因為兩個原因:1是在實際工作用,用代碼生成UI的部分也不少。作為開發者首先就要要弄清楚這個原理。2是因為我們在后面學習到深度定制某一個UI控件的時候(假設我們這里的需求是自己開發一個button,自己的這個button 不能接受鼠標的點擊事件,),這就需要我們自己create mybutton,并重寫 mybutton的click事件,或者直接屏蔽click事件,這些的基礎都是自己創建UI并。如果這塊暫時想不明白也沒有關系,學到后面知識就了解了。
三。 QT控件學習
實際上就是學習如下圖的所有,但是有些UI不常用,有些UI,常用的部分,會在標題前面加上紅色的"常用"兩個字