天天看點

在visualstudio中使用Qt1.  說明2.  開發3.  程式設計雜項

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

在visualstudio中使用Qt1.  說明2.  開發3.  程式設計雜項

在安裝Qt的開發插件之後,visual studio的IDE是長這樣的

在visualstudio中使用Qt1.  說明2.  開發3.  程式設計雜項
在visualstudio中使用Qt1.  說明2.  開發3.  程式設計雜項

在工程上右鍵多了這麼幾個選項:

在visualstudio中使用Qt1.  說明2.  開發3.  程式設計雜項