Qt學習筆記

2021-08-11 02:23:32 字數 4493 閱讀 8074

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...