1.簡介
qt 是乙個跨平台的
c++應用程式框架。它不只是乙個
gui(
graphical user inte***ce
)庫,它還內建了很多技術,如連線資料庫等。在一定程度上,提供「一站式」的解決方案。
安裝後的
qt主要包含以下幾部分:
1) qt library
:核心,
qt的庫。
2) qt creator
:輕量級
ide(
qt creator
是快平台的,更換平台後不需要重新學習
ide的使用)。
3) qt designer:qt
程式的ui
設計器。借助
qt designer
,即使不編寫**,拖拖拽拽也可以開發簡單的
gui程式,並且可以及時預覽程式介面(無需編譯)。
4) qt assistant:qt
幫助工具,包含了
qt教程、示例、類參考手冊、模組介紹等,是
qt的官方資料,類似
msdn
。學習qt
,一定要會使用
assistant
查詢資料。
5)qt linguist:qt
語言家,是
qt的國際化工具,借助它可以很方便的將介面上的文字翻譯成其他語言,從而讓程式支援多種語言,面向全球使用者。
2.配置 工具
-選項-構建和執行的
「qt版本」和
「工具鏈
」這兩個選項卡中配置
qt creator
所使用的
qt版本和編譯器;偵錯程式(
cdb/gdb)
3.重要的機制
訊號槽,當某個事件發生之後,它就會發出乙個訊號
signal
。如果有物件對這個訊號感興趣,它就會使用連線(
connect
)函式,用自己的乙個函式(成為槽(
slot
))來處理這個訊號。
4.簡單示例
helloworld
顯示
【未包含目錄
qlabel
等——>
可能是建立了控制台應用程式,如果
,則pro
中自動顯示
qt-= gui
,需修正過來即可包含類
jpg檔案不顯示——》要在
exe同一目錄下新建名為
imageformats
的資料夾。找到
qt安裝目錄下
c:\qt\4.8.5\plugins\imageformats
子目錄,將該子目錄下的
qjpeg4.dll
檔案複製到其中即可。】
#include
#include
int main(int argc, char *argv)
自適應顯示
5.配置
opencv 在
pro中加入頭檔案目錄
includepath += d:/programfiles/opencv2.4.8/build/include/opencv/
includepath += d:/programfiles/opencv2.4.8/build/include/opencv2/
includepath += d:/programfiles/opencv2.4.8/build/include
lib目錄
libs +=d:/programfiles/opencv2.4.8/build/x86/vc10/lib/opencv_core248d.lib
libs +=d:/programfiles/opencv2.4.8/build/x86/vc10/lib/opencv_highgui248d.lib
libs += d:/programfiles/opencv2.4.8/build/x86/vc10/lib/opencv_imgproc248d.lib
然後把用到的
dll拷貝到
exe的生成目錄中
#include
#include
#include
#include
#include
usingnamespace cv;
using namespacestd;
intmain()
6.呼叫
dll
qt呼叫
dll示例(注意版本一致,還有
debug/release
一致)
vs2010
製作dll,
【專案-屬性-
配置屬性-常規
-字符集
-未設定】 【
******dll.h】
#pragma once;
#ifdefdll_implement//
該巨集在cpp
中定義
#definedll_api __declspec(dllexport)//
該巨集在dll
專案內部使用
dllexport匯出
#else
#definedll_api __declspec(dllimport)//
該巨集在dll
專案外部使用
dllimport匯入
#endif
extern"c" dll_api void printnum(int a, char* b); 【
******dll.cpp】
#definedll_implement //
巨集定義
#include"******dll.h"
#include
usingnamespace std;
voiddll_api printnum(int a, char* b)
qt中新建應用程式
testdll
(標頭檔案放入
資料夾testdll
中,dll
放入資料夾
build-testdll-local_pc-release/debug中)
#include
#include
extern"c"
typedefvoid(*printfunc)(int,char*);
intmain(int argc, char *argv)
} return a.exec(); //
載入失敗則退出 }
注意:當
qt的編譯器不是
10的編譯器時,上述呼叫還是會出錯。【
vs預設工程字符集為
unicode
,但vc
預設字符集為多位元組字符集】
dll
的介面引數:跨模組的介面中,引數和返回值都應該使用內建資料型別,要用
c標準
①
stl不一定不能在
dll間傳遞【跨模組記憶體分配和釋放的問題】
stirng
改用char*,
注意路徑不能有中文,字串裡的中文列印出來也是亂碼
②
可以傳引用,注意呼叫。如
int add(int &,int &)
,不能直接
int c=add(2
,3),而要
int a=2;intb=3;int c=add(a,b);
【專案經驗】
環境:dll製作(vs2010+opencv2.4.8),dll呼叫(qt2.4.8)
a.要求在中顯示含有漢字的檔名
首先在vs工程中解決列印中文名稱的問題。由於cvputtext不支援漢字,所以借助第三方庫freetype。
參考:
假定我設定的字型是微軟雅黑,也就是新增檔案msyh.ttf。
這在qt中怎麼呼叫?
b.加速
vs工程中利用openmp並行加速(c++,語言,是否支援openmp,封裝。我自己環境的qt能呼叫,但在沒有vs2010編譯器的qt中呼叫失敗?
7.關於中文顯示為亂碼的編碼問題
怎麼載入lib/font資料夾裡的字型呢?新增環境變數?設定編譯引數?怎麼開啟qtconfigure介面?
Qt學習筆記
1.參考資料 1 2 3 4 5 6 2.faq 2.1.qt creator 2.1.1.xp下用qt creator編譯自帶例子mdi sdi 當不勾選projects build settings build environment的 clear system environment 時,編譯...
QT學習筆記
1.在windows下配置好qt的環境變數以後,用cmd開始編譯,qmake project qmake hello.pro mingw32 make 結果出現錯誤 include 問題已經解決了,主要是 故而只需在.pro檔案中加入 greaterthan qt major version,4 q...
Qt 學習筆記
常用控制項對應類 窗體 qwidget 水平布局 qhboxlayout 豎直布局 qvboxlayout 網格布局 qgridlayout 按鈕 qpushbutton 標籤 靜態文字框 qlabel qlineedit label new qlabel tr find what lineedit...