如題所述,我記得C++編程中一般h檔案寫宣告,cpp檔案寫實作。用Qt Creater生成一個什么也沒有寫的程式,打開看了一下提到的這個頭檔案,發現里面盡然有實作。
uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
這個檔案是編譯器針對UI生成的中間檔案,ui檔案xml格式的,Qt編譯時,先用uic工具將mainwindow.ui編譯生成ui_mainwindow.h,轉化為c++類,就是 Ui::MainWindow,然后在MainWindow.cpp中有一個UI成員變數被初始化為Ui::MainWindow,達到可以在程式中訪問界面的目的。uj5u.com熱心網友回復:
這個cpp不需要你去改uj5u.com熱心網友回復:
為什么在h檔案中有“實作”,語言東西,別太較真uj5u.com熱心網友回復:
我不是要改這個東西,我只是想問一下。難道我說一個女的真漂亮就要娶她做老婆嗎?哈哈。
uj5u.com熱心網友回復:
只有您是審題最精準的,最近遇到好多回答題的單獨看都說的很對,但和問題根本不匹配。但仍然感謝大家的熱心。
uj5u.com熱心網友回復:
您說的很對,感謝耐心回答,然而我其實想知道的是作為一個h檔案,其中為什么有了函式的實作,不是應該只宣告,然后在cpp中實作嗎?我想是不是因為這個Ui_MainWindow類較簡單單一,所以Qt就這樣干了?我不是挑Qt的毛病,Qt在我心中是很偉大的。
uj5u.com熱心網友回復:
同學,你多學幾門語言就不會有這種疑問了,Java就一個檔案。
還有分頭檔案和cpp的好處,你需要去了解一下程式編譯的程序。
頭檔案的include都很講究的,在大工程,海量代碼下。
你想象不到office原始碼全編譯一次需要幾天吧?
uj5u.com熱心網友回復:
QT原始碼里有很多值得學習的,有很多軟體工程方便的知識和道理。比mfc的設計強不知道多少
uj5u.com熱心網友回復:
這個檔案是編譯器針對UI生成的中間檔案,ui檔案xml格式的,Qt編譯時,先用uic工具將mainwindow.ui編譯生成ui_mainwindow.h,轉化為c++類,就是 Ui::MainWindow,然后在MainWindow.cpp中有一個UI成員變數被初始化為Ui::MainWindow,達到可以在程式中訪問界面的目的。
您說的很對,感謝耐心回答,然而我其實想知道的是作為一個h檔案,其中為什么有了函式的實作,不是應該只宣告,然后在cpp中實作嗎?我想是不是因為這個Ui_MainWindow類較簡單單一,所以Qt就這樣干了?我不是挑Qt的毛病,Qt在我心中是很偉大的。
講真,沒想到你會糾結這個點。
uj5u.com熱心網友回復:
這個檔案是編譯器針對UI生成的中間檔案,ui檔案xml格式的,Qt編譯時,先用uic工具將mainwindow.ui編譯生成ui_mainwindow.h,轉化為c++類,就是 Ui::MainWindow,然后在MainWindow.cpp中有一個UI成員變數被初始化為Ui::MainWindow,達到可以在程式中訪問界面的目的。
您說的很對,感謝耐心回答,然而我其實想知道的是作為一個h檔案,其中為什么有了函式的實作,不是應該只宣告,然后在cpp中實作嗎?我想是不是因為這個Ui_MainWindow類較簡單單一,所以Qt就這樣干了?我不是挑Qt的毛病,Qt在我心中是很偉大的。
同學,你多學幾門語言就不會有這種疑問了,Java就一個檔案。
還有分頭檔案和cpp的好處,你需要去了解一下程式編譯的程序。
頭檔案的include都很講究的,在大工程,海量代碼下。
你想象不到office原始碼全編譯一次需要幾天吧?
大神啊,我只是想問問這個檔案,作為一個.h檔案,為什么其中有了實作了啊?
.h .cpp分開的好處我是知道的哈,我不是問這個啊。您說的其他的類似java什么的,還有Office原始碼什么的我也不懂啊。
我覺得您這個大神輕視后學,沒好好回答我的問題,哈哈。
uj5u.com熱心網友回復:
這個檔案是編譯器針對UI生成的中間檔案,ui檔案xml格式的,Qt編譯時,先用uic工具將mainwindow.ui編譯生成ui_mainwindow.h,轉化為c++類,就是 Ui::MainWindow,然后在MainWindow.cpp中有一個UI成員變數被初始化為Ui::MainWindow,達到可以在程式中訪問界面的目的。
您說的很對,感謝耐心回答,然而我其實想知道的是作為一個h檔案,其中為什么有了函式的實作,不是應該只宣告,然后在cpp中實作嗎?我想是不是因為這個Ui_MainWindow類較簡單單一,所以Qt就這樣干了?我不是挑Qt的毛病,Qt在我心中是很偉大的。
講真,沒想到你會糾結這個點。
是啊,是有點糾結啊,所以來問問,看看大神們怎么看待。但大神們普遍覺得我問的好像不太有水平。有點說我“不問蒼生問鬼神”。
uj5u.com熱心網友回復:
QT原始碼里有很多值得學習的,有很多軟體工程方便的知識和道理。
比mfc的設計強不知道多少
MFC接觸過,弄的我不知所措,最后,轉入了.net,真香!現在想研究研究Qt。
uj5u.com熱心網友回復:
1.ui_xxx.h是qmake根據xxx.ui檔案自動生成的一個頭檔案2.Qt這種設計模式是一個經典的設計模式,你可以認為是一種build模式加decorator模式。
Qt原始碼簡直就是一個C++的寶庫。你要是經常去讀可以有很多可借鑒的地方。如果想做復雜一點的desktop app建議可以讀一下QtCreator原始碼
uj5u.com熱心網友回復:
肯定有實作啊,不然控制元件位置,控制元件關系,控制元件ID 。。。什么的,怎么弄出來的uj5u.com熱心網友回復:
可以有實作的,也可以只宣告,兩種都可以uj5u.com熱心網友回復:
啊,這個帖子氛圍真好,也解決了我的疑問,感謝!uj5u.com熱心網友回復:
c++頭檔案中有實作實在是太正常了。inline了解一下。上邊已經有人說了ui_xxx.h的產生原理。再多說一點的話,其實這是一個經典的設計模式。你可以去看看裝飾者模式。第二,曾經的模板類實作還有要求成員函式都得是inline的,你要是放在cpp里還會編譯報錯,當然現在不用了。inline的優點是程式性能好,缺點是編譯出來的目標碼有點大uj5u.com熱心網友回復:
c++頭檔案中有實作實在是太正常了。inline了解一下。上邊已經有人說了ui_xxx.h的產生原理。再多說一點的話,其實這是一個經典的設計模式。你可以去看看裝飾者模式。第二,曾經的模板類實作還有要求成員函式都得是inline的,你要是放在cpp里還會編譯報錯,當然現在不用了。inline的優點是程式性能好,缺點是編譯出來的目標碼有點大
感謝大神指點,我好好琢磨琢磨您的話~~
uj5u.com熱心網友回復:
h檔案寫類的實作并不報錯,所以沒毛病uj5u.com熱心網友回復:
剛開始學QT的時候發有這個ui_mainwindow.h檔案,感覺就像是發現了新大陸,把不會的控制元件放UI上各種調整設定,然后來看代碼是怎么使用這些屬性與函式的。uj5u.com熱心網友回復:
事實上,宣告一個類即可以只有頭檔案又可以只有cpp檔案。這里采用頭檔案一是為了減少自帶的檔案數,使專案更簡潔,因為這個類只有一個函式實作沒有必要再加一個檔案去實作這唯一一個函式,從而使專案變得更簡潔。二是為了規范,我們一般都說參考頭檔案,很少說去參考cpp檔案,因此,這里采用頭檔案包含實作是比較合理的。uj5u.com熱心網友回復:
.h里實作的叫類的inline函式uj5u.com熱心網友回復:
樓上正解。里面定義的都默認行內。轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/42427.html
標籤:Qt
