在visualstudio中使用Qt


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是長這樣的

 

 

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

 

 

 
0


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM