㈠ 編譯qt4.8.6需要多長時間
認真核對操作步驟:
1、修改環境變數工具推薦:Rapid Environment Editor。
修改前請先備份當前的環境變數。然後:
(1)檢查系統變數path,刪除有關mingw其他版本等信息,以免與後續的mingw32-make沖突。
(2)檢查用戶變數INCLUDE、LIB、PATH、MSDevDir和MSVCDir,刪除有關\Microsoft Visual Studio\VC98的信息,因為它們會與後續的mingw32-make沖突,導致編譯出錯。
2、在電腦上安裝mingw編譯器,假設路徑安裝在C:\Qt\mingw32。將C:\Qt\mingw32\bin添加進環境變數path,打開DOS命令行輸入gcc --version和g++ --version和mingw32-make --version驗證編譯器安裝成功。我用的MinGW版本是V4.8.2,
3、解壓qt-everywhere-opensource-src-4.8.6.zip並進入目錄。例如:D:\qt-everywhere-opensource-src-4.8.6\
4、依次執行以下DOS命令:
(1)configure -debug-and-release -opensource -prefix "D:\Qt4.8.6" -platform win32-g++ -nomake demos -nomake examples
常見的使用選項說明:
-debug-and-release 編譯debug和release版
-opensource 選擇開源協議並確認
-platform win32-g++ 使用mingw編譯
-prefix "D:\Qt4.8.6" 指定編譯結果目錄,如果未指定則默認當前
-shared 創建和使用共享Qt庫
-static 創建和使用靜態Qt庫
-nomake demos -nomake examples 不編譯常式
-nomake tests 不編譯tests
-skip qtwebkit 忽略qtwebkit,因為編譯它特別消耗時間
-mp 使用多核優化編譯
(2)mingw32-make
(3)mingw32-make install
5、編譯完成後,把C:\Qt\mingw32\bin\路徑下的三個文件libgcc_s_dw2-1.dll、libstdc++-6.dll和libwinpthread-1.dll拷貝到D:\qt-everywhere-opensource-src-4.8.6\bin\。另外,也請把步驟1備份的環境變數還原。
6、修改Qt安裝路徑
最初編譯時選擇的路徑是D:\Qt4.8.6\。如果想將它復制到其他盤符,並且改名,例如:C:\Qt\4.8.6_MinGW。這樣一來會有問題嗎?是的,會有問題,因為Qt有絕對路徑依賴症。改名後C:\Qt\4.8.6_MinGW\bin\的exe執行程序都會出問題,要麼程序打不開,要麼多國語言發生異常。用記事本打開C:\Qt\4.8.6_MinGW\bin\qmake.exe,查找關鍵字「qt_prfxpath」,可以看到裡面含有原始的安裝路徑。我們不可以手動去修改qmake.exe,真正有效的解決方法是:
在C:\Qt\4.8.6_MinGW\bin\路徑下創建一個qt.conf文件,內容為
[paths]
Prefix = C:/Qt/4.8.6_MinGW
請注意:qt.conf文件必須是ANSI格式,並且Prefix的斜杠風格採取的是Linux的,而非Windows,否則會失效。或者使用"Prefix = .. ",如此一來,任意路徑有效。
㈡ 為什麼 Qt Creator 的編譯如此之慢
C++ 的編譯很慢,與其他語言完全不在一個數量級。任何 C++ 項目都比其他語言的編譯慢,一方面是 C++ 語言本身復雜,另外一方面是 C++ 頭文件太大,很多庫是直接在頭文件裡面實現的,所以每次需要編譯的代碼量很大。這個跟 C# 沒有可比性。
MFC 使用預編譯頭文件來緩解這個問題,在 VC 裡面集成了預編譯好的 MFC 頭文件,因而編譯速度過得去。
Qt Creator 使用 mingw-gcc 編譯,沒有預編譯頭文件的機制,對每個源代碼都需要編譯 Qt 的頭文件,所以完全編譯會是慢的。
㈢ qt 構造界面速度慢,是否有提高速度的方法
最直觀的方法如樓上說的新建一個對話框ui類,利用Qt Creator的向導功能很容易實現。在主界面中顯示該對話框,即在mainwindow.cpp的某個方法中調用對話框的顯示方法。傳遞參數可以修改對話框的構造函數,或者在顯示對話框之前調用它的其他函數,將參數傳遞進對話框。
簡單的示例:
對話框類:
class MyDialog: public QDialog
{
...
public:
...
void setSomething(const QVariant &something);
....
}
主界面函數
Mainwindow::showDialog()
{
MyDialog dialog(this);
dialog.setSomething(this->some_member);
dialog.exec();
}
㈣ 大家幫忙看看,怎麼加快這個Qt程序的運行速度
肯定是MFC 了 Qt需要太多的庫支持,從一個簡單的MessageBox就可以看出來,MFC是直接用操作系統的介面的,而 Qt卻需要用QMessageBox來封裝起來
㈤ Qt Creator里如何設置gcc編譯的優化等級
不是release優化的問題。如果是直接運行的話,mingwm10.dll、libgcc_s_dw2-1.dll、qtcore4.dll、qtgui4.dll,還有相應的你用到的庫都要放在運行目錄下,用dependency walker可以看到dll依賴情況。
然後用到的插件比如qmltooling、imageformats等目錄也需要拷到運行目錄中,這個用工具看不到依賴,只能全拷然後用排除法,有經驗之後代碼里哪些用到了就知道了。
出現runtime library錯誤的最大可能性就是運行目錄下的插件不完整。
另外有一種解決方法就是把qt改成靜態鏈接,編譯進exe,商業版允許這樣做,lgpl版的話如果不是自用就有法律風險。
㈥ 改了QT的源碼怎麼編譯
你想要修改源代碼,首先你要拿到源代碼。
如果你拿不到,那對於iOS來說就不用想了(反編譯也就能到二進制文件,如果你感興趣也可以嘗試修改二進制文件),你是無法修改的。
對於Android,可以將apk反編譯回代碼,但是Android開發者基本都會在發布之前採取一些防反編譯的措施(比如代碼混淆),所以你可以想像拿到的代碼的可讀性…
反編譯和修改這種行為極有可能構成侵權,請尊重每個開發者,不論出於學習目的還是其他目的
㈦ QT 和VC++ 的區別(包括效率)
簡單說說我的看法!
####################################################
確切說應該比較的是QT和MFC兩個界面庫
QT使用的編譯器是MinGW,即Linux下的GCC移植到windows的版本
MFC使用的編譯器是Visual C++
QT的應用主要在Linux下,但是它本身是跨平台的,也支持其他操作系統,是現在比較著名的界面庫,著名的KDE就是使用QT開發的
MFC是提供給VC的,但是它主要是代碼庫,不像VCL和編譯器掛鉤很多,但是MFC主要是對windows API的封裝,所以只能用於windows平台
根據你所說的方面,簡單比較一下:
1.開發速度
整體來說可能MFC會快捷一些,因為windows平台的開發工具大多很智能,因為立足於windows的開發人群很廣,從菜鳥到專業人士,但是QT由於基於Linux,可用的開發工具不多,大都比較專業,多是第三方產品,而且集成度不大,第三方庫也沒有MFC的多,從這一點MFC略勝一籌,但是QT自從被Nokia收購後,官方發布了跨平台集成開發環境QTCreator,所以之後走向就不好說了,個人總體感覺QT Creator和VS.net差距比較大,還需改進
但是從庫本身來說QT集成的功能較MFC龐大,而且使用的封裝技術信號和槽也是比較受到贊許的,比如QT Script為QT提供嵌入式腳本,QT界面庫支持CSS,所以QT做出來的界面比MFC要好,而且比較容易,MFC就需要藉助第三方庫了
因為MFC是淺層封裝(最新的2008 sp1加入了BCG的高級界面庫,可能有所改善)windows SDK,以降低使用windows SDK引起的開發效率的降低,和開發難度的增加
所以QT庫是比MFC優秀的,兩個庫都經受了時間的考驗,穩定性都很高,Bug幾乎沒有
2.運行效率
MFC由於其淺層封裝的特點,所以運行效率是比較高的,加上vc對windows的針對性優化,整體性能是比較高的,但是如果加入第三方庫就不敢保證了
QT因為庫比較龐大,封裝層次較深,所以運行效率較MFC為低,但是在現在的機器配置下,C#大家都不介意了,這些會引起人們的介意嗎?
3.應用范圍,現在windows的普及范圍誰能比過,所以MFC的客戶量比較多,QT主要是Linux下的開發人員在使用,但MFC也只是得益於windows(感覺又是一次捆綁戰略)
MFC不支持嵌入式開發(主要指手機平台),但是QT有對應的模塊,但是現在Java的天下又有誰能撼動?
4.學習難度
QT的封裝哲學比較明晰,和系統隔離的比較好,所以個人感覺門檻不高
MFC較難精通,因為深入開發之後SDK還是要了解的,否則程序感覺比較兒童化,呵呵
如果你要選擇工作的方向,就現在來說基於vc的開發是比較多的,所以就業比較好
Linux下的QT開發的就業情況還有待提高,但是專業方面,比如企業級的開發,或者涉及了Linux系統,QT還是可以的
這是我的一點見解,主要是自己的感覺,希望對你有所幫助!
㈧ 怎樣才能提高QT升級的速度!···
帶寵物讓它學積分加加或積分多多,多打BOSS,比武
英雄,這些的分值比較大,要利用好雙倍積分的時間。有條件的還可以做紫鑽
㈨ Qt 子界面打開速度很慢,有什麼辦法能顯著提高速度
提高速度的方法不是很清楚,不過你把幾百個控制項放一個子界面是否妥當
㈩ QT如何進行線程編譯
在Qt中使用多線程,目前就我使用過的有兩種,一是子類化QThread,重寫run函數,在run函數里實現自己的代碼,這一部分代碼通常是比較耗時,或者乾脆直接阻塞的。比如一個while循環,設置一個標志,判斷循環結束。
這樣的例子在網上有很多,就不寫了。
這樣寫的話,會有一些東西需要了解。
子類化QThread的方法,只有run函數裡面的內容是執行在子線程里的,其他的部分,比如槽函數什麼的還是在主線程里執行(假設是在主線程開啟的該子線程)。
還有一種方法,是子類化QObject,新建一個線程,然後使用MoveToThread把這個類的對象移到新建的線程中,這種做法使得它所有的槽函數都是執行在新開辟的線程裡面。
如果直接(QObject對象).abc()的話,這個成員函數是在主進程內執行,可能會出現"QObject::killTimer: timers
cannot be stopped from another thread"的運行錯誤。
使用第二種方法的話,貌似會遇到這樣的問題:如果在一個槽函數中把子線程阻塞,其他的槽函數無法接受來自主線程