1. 說明
在此說明一下IDE跟封裝的之間的關系,他們之間本質上來說沒有關系,是可以多對對的關系。
Qt開發是個比較泛的概念,Qt是由很多一系列類組成的整體,就像boost裡面也有很多的類,而boost是一個整體的概念。同樣,MFC也是一個比較泛的概念,裡面有很多類。
這三種都是所謂的程式設計或封裝的類。
visual studio是VC開發的一個IDE,eclipse似乎也可以作為VC開發的IDE。記事本也是個IDE,隻是比較簡陋。QtCreator也是個IDE。
visual studio這個IDE也可以來開發“使用Qt庫”的程式。隻是站在程式編譯的角度,你要告訴IDE你這個檔案該怎麼編譯。
維護商業版Qt的公司開發了一個“友善編譯Qt程式”的IDE,叫QtCreator,這個工具跨平台,隻是相比visualstudio,這個工具的功能不太強大,想嘗試的童鞋可以試試。
你可以在任何工程中使用Qt的庫,比如使用Qt的字元處理類QString、QFile。需要注意的是,如果你的程式中使用了消息響應相關的内容,那主程式就得是QtCoreApplication。不過很多時候你不需要關注這種細節。
Qt的消息響應并不局限在界面程式,不帶界面的程式裡面也會有消息處理。
當然,MFC的界面類和Qt的界面類是可以一起出現在程式裡面的,不過這個隻有高手才會,入門者一般不推薦這樣做。
2. 開發
1.1. 基礎知識
部署開發環境;
将qt安裝在d盤根目錄下,建立以下兩個環境變量:QMAKESPEC=win32-msvc2008、QTDIR=D:\Qt\4.6.2
往Path路徑加入”%QTDIR%\bin”
VC工程設定
設定頭檔案include目錄,如下圖:
設定連結庫目錄:
設定依賴的庫庫檔案(注意Debug和Release版本檔案不要用錯):
Qt基礎知識
學習《C++ GUI Programming with Qt4》章節Chapter 1;
了解signal、slot;
(可參考幫助文檔(Home/The QtObject Model/signals and slots)章節)
參考資料:
C++ GUI Programming with Qt4
Qt Assistant幫助文檔
1.2. Qt GUI程式設計
對話框QDialog:
使用對話框作為資訊的錄入界面;
學習《C++ GUI Programming with Qt4》Chapter2
掌握程式主視窗、菜單、工具欄、Action響應處理:
學習《C++ GUI Programming with Qt4》Chapter3
D:\Qt\4.6.2\examples\mainwindows\application;
建構程式界面的方法:
方法1、使用designer設計界面,界面直覺,适用于複雜的界面布局;
(ui檔案的使用見“程式設計雜項\編譯UI檔案”)
方法2、在界面簡單且後續很少改動的情況下直接使用代碼手工編寫界面(使用Layout);
清單控件QTreeWidget:
使用QTreeWidget顯示具有層次結構的資料;
示例代碼:
Example\TreeWidget;
1.3. 資料庫操作
連接配接oracle資料庫,掌握QSqlDatabase;
使用QSqlQuery實作增、删、查、改等基本資料庫操作;
學習《C++ GUI Programming with Qt4》Chapter 13.
示例代碼:Example\Database;
1.4. 2D圖形繪制
學習《C++ GUI Programming with Qt4》Chapter8
3. 程式設計雜項
中文顯示
設定編碼,在構造Application時調用:
QTextCodec * pCodeC =QTextCodec::codecForName(“GB18030”);
QTextCodec::setCodecForCStrings(pCodeC);l
QTextCodec::setCodecForLocal(pCodeC);
QTextCodec::setCodecForTr(pCodeC);
構造中文内容的QString
QString strContent =QString::fromLocal8Bit(“中文内容”);
QString、CString、const char *間的轉換:
const char * szTest = “測試文字”;
CString strC = CString(szTest);
QString strQ =QString::fromLocal8Bit(szTest);
strC = QString::fromLocal8Bit((const char*)strQ.toLocal8Bit());
編譯UI檔案(界面檔案)
設定ui檔案的編譯選項:
Command Line:
%qtdir%\bin\uic.exe $(InputPath) -o$(InputDir)ui_$(InputName).h
Description:
Uic'ing $(InputName).ui ...
Outputs:
$(InputDir)ui_$(InputName).h
使用舉例:
DMSCreatePlanDlg.ui通過uic指令生成了ui_DMSCreatePlanDlg.h
DMSCreatePlanDlg.h檔案:
#include “ui_DMSCreatePlanDlg.h”
class DMSCreatePlanDlg : public QDialog
{
Q_OBJECT
public:
DMSCreatePlanDlg(QWidget* pParent);
private:
Ui::DMDCreatePlanDlgui;
}
DMSCreatePlanDlg.cpp檔案:
DMSCreatePlanDlg::DMSCreatePlanDlg(QWidget* pParent)
: QDialog(pParent)
{
ui.setupUi(this);
……
}
編譯帶moc資訊頭檔案
設定需要生成moc資訊頭檔案的編譯選項:
Command Line:
%qtdir%\bin\moc.exe$(InputDir)$(InputName).h
-o $( ProjectDir)moc_$(InputName).cpp
Description:
Moc'ing $(InputName).h ...
Outputs:
$( ProjectDir)moc_$(InputName).cpp
每個qt工程一般包含一個autogen.cppx檔案,用來include生成的moc_.cpp檔案。
元對象編譯器moc (the Meta Object Complier):
moc 分析C++源檔案,如果它發現在一個頭檔案(header file)中包含Q_OBJECT宏定義,然後動态的生成另外一個C++源檔案,這個新的源檔案包含 Q_OBJECT的實作代碼,這個新的 C++ 源檔案也會被編譯、連結到這個類的二進制代碼中去,因為它也是這個類的完整的一部分。通常,這個新的C++ 源檔案會在以前的C++ 源檔案名前面加上 moc_ 作為新檔案的檔案名。
QWidget和QDialog的選擇
QWidget是視窗元件,可當做控件,一般用于嵌入在其他QWidget或對話框中;
QDialog是獨立的視窗,用于獨立顯示;
使用Visual Studio Add-in 1.2.3 for Qt5
使用此工具可以免除添加編譯選項的麻煩
下載下傳位址Qt相關程式的位址
http://qt-project.org/downloads

在安裝Qt的開發插件之後,visual studio的IDE是長這樣的
在工程上右鍵多了這麼幾個選項: