建立Qt4 + Dev C++的開發環境

 QT-4.61

執行環境:
安裝Qt runtime(檔名:qt-runtime-4.x.x-full-setup.exe),安裝完即可執行。

開發環境:
1.請至http://ftp3.ie.freebsd.org/pub/trolltech/pub/qt/source/ 下載適合版本(檔名:qt-win-opensource-4.x.x-mingw.exe)並安裝。
PS:我的版本是4.3.3,安裝目錄為D:\Qt\4.3.3,若與我的版本或目錄不同,需修改以下相關參數內容。

2. 在我的電腦按右鍵->內容->進階->環境變數

編輯PATH,增加如下的變數值:
D:\Qt\4.3.3\bin;D:\Dev-Cpp\bin;D:\Dev-Cpp\mingw32\bin;

新增QMAKESPEC變數,變數值如下:
win32-g++

新增變數QTDIR,變數值如下:
D:\Qt\4.3.3

3.至Dev C++的模板目錄(例如D:\Dev-Cpp\Templates)底下,新增如下兩個檔案:

QT4.template:

[Template]
ver=1
Name=QT4 Application
Description=This is a QT4 Application project.
Catagory=GUI

[Unit0]
CppName=main.cpp
Cpp=Qt4_helloWorld.txt

[Project]
UnitCount=1
Type=0
IsCpp=1
Compiler=
CppCompiler=-DWIN32_@@__@@__@@_
Linker=D:/Qt/4.3.3/lib/libQt3Support4.a_@@_D:/Qt/4.3.3/lib/libQtAssistantClient4.a_@@_D:/Qt/4.3.3/lib/libQtCore4.a_@@_D:/Qt/4.3.3/lib/libQtDesigner4.a_@@_D:/Qt/4.3.3/lib/libQtDesignerComponents4.a_@@_D:/Qt/4.3.3/lib/libQtGui4.a_@@_D:/Qt/4.3.3/lib/libqtmain.a_@@_D:/Qt/4.3.3/lib/libQtNetwork4.a_@@_D:/Qt/4.3.3/lib/libQtOpenGL4.a_@@_D:/Qt/4.3.3/lib/libQtSql4.a_@@_D:/Qt/4.3.3/lib/libQtXml4.a_@@_
Includes=D:/Qt/4.3.3/include;D:/Qt/4.3.3/include/Qt;D:/Qt/4.3.3/include/Qt3Support;D:/Qt/4.3.3/include/QtAssistant;D:/Qt/4.3.3/include/QtCore;D:/Qt/4.3.3/include/QtDesigner;D:/Qt/4.3.3/include/QtGui;D:/Qt/4.3.3/include/QtDBus;D:/Qt/4.3.3/include/QtMotif;D:/Qt/4.3.3/include/QtNetwork;D:/Qt/4.3.3/include/QtSvg;D:/Qt/4.3.3/include/QtOpenGL;D:/Qt/4.3.3/include/QtSql;D:/Qt/4.3.3/include/QtTest;D:/Qt/4.3.3/include/QtUiTools;D:/Qt/4.3.3/include/QtXml
Libs=D:/Qt/4.3.4/lib
CompilerSettings=1000001000000000000000
CompilerSet=2
IncludeVersionInfo=0
SupportXPThemes=0
Name=QT Application project
MakeIncludes=QT_UIMake.mak
UseCustomMakefile=1
CustomMakefile=Makefile.Release

QT4_helloWorld.txt:

#include <QApplication>
#include <QPushButton>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    QPushButton hello("Hello world!");
    hello.resize(100, 30);

    hello.show();
    return app.exec();
}

4.開啟Dev C++,工具->編譯器選項->目錄

二進位檔新增D:\Qt\4.3.3\bin
函式庫新增D:\Qt\4.3.3\lib
C++引入檔新增D:\Qt\4.3.3\include

5.開啟Dev C++,開新檔案->專案->GUI->QT4 Application,即可開始編寫Qt4程式!





另外須提醒的是,Dev C++所編譯出來的Qt程式檔雖然已經是release版本,但似乎沒有經過最佳化,檔案大小仍有往下壓縮的空間。

以最簡單的Hello World為例,Dev C++編譯出的程式大小為100k,但純以qmake編譯卻只有25k,足足差了四倍。

所以在程式確定撰寫完畢後,建議可以透過以下的cmd批次檔進行最終編譯,以取得最精簡的程式大小。

qmake.cmd:
@echo off

set QTDIR=D:\Qt\4.3.3
set PATH=D:\Qt\4.3.3\bin;D:\Dev-Cpp\bin;%SystemRoot%\tmp;%path%
set QMAKESPEC=win32-g++

if exist release del release\*.* /q
if exist debug del debug\*.* /q

qmake -project
qmake
make release



Dev C++編譯後若出現[Linker error] undefined reference to vtable for ...

基本上,只要有用到Q_OBJECT這個巨集,都難逃此一窘境。原本Qt的qmake會生成一個moc_xxx.cpp檔,並自動連結起來,使之可以正確編譯;但Dev C++卻沒有這種機制,所以辛苦點,需要手動加入。以下提供兩種解決方案。


解決方案一:
1.直接使用上面提及的cmd批次檔,與程式碼放在同個資料夾內點兩下執行。

2.打開目錄下新生成的release資料夾,將moc_xxx.cpp複製到原本程式碼的目錄下。

3.將moc_xxx.cpp加入Dev C++專案,將#include "../xxx.h"改為#include "xxx.h",最後重新編譯即可。


解決方案二:
1.開始->程式集->Qt by Trolltech v4.3.3(opensource)->執行Qt 4.3.3 Command Prompt

2.會開啟一個cmd視窗,以cd指令進入自己的程式碼目錄。

3.moc xxx.h

4.在cmd視窗中按右鍵->全選->按CTRL+C。

5.在Dev C++的專案中新開檔案,取名為moc_xxx.cpp,將之前的複製內容貼上,並儲存。

6.OK,可以正確編譯了。



使用Qt Designer設計介面

1.以Qt Designer設計好界面,存成.ui檔。

2.開啟Qt 4.3.3 Command Prompt,進入專案路徑,輸入以下指令:
uic -o 輸出的檔名.h 設計好的介面檔.ui
ex. uic -o form_1.h form_1.ui

3.專案加入生成的.h檔,並使用該.h檔中的class建構程式,例如:
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    Ui_Dialog ui;
    QDialog Dialog;
    ui.setupUi(&Dialog);
    Dialog.show();
    return app.exec();
}

6 Responses to “建立Qt4 + Dev C++的開發環境” ;

匿名 提到...

qt-runtime-4.x.x-full-setup.exe 它由 nokia 的網站下載嗎 ?

surveyorK 提到...

官方並不提供runtime,多半是網路上個人製作,若Google找不到那大概就沒有了。

QT runtime的製作方法可看此篇:

http://surveyork.blogspot.com/2010/06/qt-runtime-setup.html

匿名 提到...

Qt Designer 是否是指由 nokia 網站下載的sdk

surveyorK 提到...

一般來說,安裝QT SDK就會一併安裝Qt Designer了。

匿名 提到...

講 QT Designer 的操作的書訪間有嗎?還是只有去 nokia
的網站上慢慢k 了

surveyorK 提到...

網路上應該有一些中文教學,可以試著google找看看。

張貼留言