第一個(gè)Qt項(xiàng)目小結(jié)

第一次做Qt,這里把主要的坑列出來(lái)。

連接Mysql

Qt連接mysql的時(shí)候,會(huì)遇到:

QSqlDatabase:QMYSQL driver not loaded

QSqlDatabase:available drivers:QSQLITE QMYSQL QMYSQL3 QOBDC QOBDC3 QPSQL QPSQL7

mysql驅(qū)動(dòng)的問(wèn)題。

Qt 是自帶了mysql的驅(qū)動(dòng),但庫(kù)的版本不對(duì),需要重新編譯。

在工程目錄*.pro 下 添加 :QT += sql

我安裝的是: qt-opensource-windows-x86-mingw491_opengl-5.4.0-rc.exe

1.先去官網(wǎng):https://dev.mysql.com/downloads/connector/c/

下載:mysql-connector-c-6.1.11-win32

目前已放到 D:\mysql-connector-c-6.1.11-win32

2.QT目錄mysql源碼的位置:C:\Qt\Qt5.4.0\5.4\Src\qtbase\src\plugins\sqldrivers\mysql

3.打開(kāi)Qt5.4終端:C:\Users\qinxiangqing\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Qt 5.4.0\5.4\MinGW 4.9 (32-bit)\Qt 5.4 for Desktop (MinGW 4.9 32 bit)

也可以在開(kāi)始目錄下找到QT的文件夾,從里面直接打開(kāi)。

4.編譯

4.1:跳到mysql源碼路徑:C:\Qt\Qt5.4.0\5.4\Src\qtbase\src\plugins\sqldrivers\mysql

4.2:執(zhí)行qmake:qmake "INCLUDEPATH+=D:\mysql-connector-c-6.1.11-win32\include" "LIBS+=D:\mysql-connector-c-6.1.11-win32\lib\libmysql.lib" -o Makefile mysql.pro

路徑一定要存在

4.3: mingw32-make?? 等待編譯完成

5.在C:\Qt\Qt5.4.0\5.4\Src\qtbase\plugins\sqldrivers 已經(jīng)新生成了動(dòng)態(tài)庫(kù),將它拷貝到C:\Qt\Qt5.4.0\5.4\mingw491_32\plugins\sqldrivers

將D:\mysql-connector-c-6.1.11-win32\lib\libmysql.dll 拷貝至 C:\Qt\Qt5.4.0\5.4\mingw491_32\bin\

6.關(guān)閉QT,重新打開(kāi)


QWT庫(kù)的使用

Qwt是Qt的一個(gè)第三方庫(kù),使用的時(shí)候,需要加載這個(gè)庫(kù)。因?yàn)轱@示流量和包流量圖用的就是這個(gè)庫(kù)。

Qt版本:5.4.0

Qwt版本:6.1.2

第一步 在官網(wǎng):https://sourceforge.net/projects/qwt/files/qwt/6.1.2/下載這個(gè)庫(kù),解壓,放到Qt安裝目錄下。

第二步:打開(kāi)qwt.pro,編譯qwt庫(kù)

編譯之前,打開(kāi)qwtbuild.pri ,把第30 行的CONFIG?????????? += debug_and_release? 添加注釋

然后構(gòu)建工程。

第三步:庫(kù)文件的拷貝

1.構(gòu)建的時(shí)候,會(huì)在Qwt根目錄下生成build-qwt-Desktop_Qt_5_4_0_MinGW_32bit-Debug的文件夾。

2.將C:\Qt\Qt5.4.0\build-qwt-Desktop_Qt_5_4_0_MinGW_32bit-Debug\lib的libqwt.a和libqwtd.a 復(fù)制到C:\Qt\Qt5.4.0\5.4\mingw491_32\lib\下

3.將C:\Qt\Qt5.4.0\build-qwt-Desktop_Qt_5_4_0_MinGW_32bit-Debug\lib的qwt.dll和qwtd.dll 復(fù)制到C:\Qt\Qt5.4.0\5.4\mingw491_32\bin\下

4.將C:\Qt\Qt5.4.0\build-qwt-Desktop_Qt_5_4_0_MinGW_32bit-Debug\designer\plugins\designer\

qwt_designer_plugin.dll 復(fù)制到C:\Qt\Qt5.4.0\5.4\mingw491_32\plugins\designer\下

5.在C:\Qt\Qt5.4.0\5.4\mingw491_32\include 目錄下新建目錄 qwt\ ,把C:\Qt\Qt5.4.0\qwt-6.1.2\src下所有的頭文件拷貝到新建的qwt\目錄下

第四步:在項(xiàng)目中使用qwt庫(kù)

在項(xiàng)目文件.pro 中,加入以下幾條語(yǔ)句:

CONFIG += qwt

DEFINES += QT_DLL QWT_DLL

LIBS += -L"C:\Qt\Qt5.4.0\build-qwt-Desktop_Qt_5_4_0_MinGW_32bit-Debug\lib" -lqwtd

LIBS += -L"C:\Qt\Qt5.4.0\build-qwt-Desktop_Qt_5_4_0_MinGW_32bit-Debug\lib" -lqwt

INCLUDEPATH += C:\Qt\Qt5.4.0\5.4\mingw491_32\include\qwt

右擊ui文件,用Qt Designer打開(kāi)就可以搜索到qwt控件了。


編譯Release版本

在Debug版本直接切換編譯Release版本會(huì)出現(xiàn)以下問(wèn)題:

Must construct aQApplication before a QPaintDevice

這是因?yàn)榘袲ebug庫(kù)和Release庫(kù)混合了的原因。

在*.pro文件中,把鏈接庫(kù)切換為Release的版本,構(gòu)建項(xiàng)目后,打開(kāi)可執(zhí)行文件,看缺少哪些庫(kù),把缺少的庫(kù)放到可執(zhí)行文件的目錄下。此時(shí)需要注意的是:庫(kù)文件要從mingw491_32\bin下拷貝,不能從Tools\QtCreator\bin下拷貝。

還需要把libmysql.dll? 和qwt.dll拷貝到可執(zhí)行文件路徑下。然后在可執(zhí)行目錄下建一個(gè)二級(jí)目錄: plugins\sqldrivers\ 在這個(gè)目錄下放入mysql庫(kù):qsqlmysql.dll。plugins目錄是我在程序中指定了。如果不指定,就會(huì)提示連接數(shù)據(jù)庫(kù)失敗,好奇怪。


打包程序

需要用到兩個(gè)工具,Qt自帶的windeployqt 這個(gè)工具可以自動(dòng)添加可執(zhí)行文件所依賴(lài)的庫(kù)。還有一個(gè)工具叫做 Engima Virtual Box 是用來(lái)真正打包的!

把可執(zhí)行程序test.exe放到一個(gè)空目錄比如 D:\demo\下

打開(kāi)Qt自帶的命令行,跳到D:\demo\

執(zhí)行:windeployqt test.exe


這一步會(huì)把可執(zhí)行程序依賴(lài)的文件都添加進(jìn)來(lái),直接打開(kāi)可執(zhí)行文件就能運(yùn)行了,如果不能運(yùn)行,就把缺少的庫(kù)加進(jìn)來(lái),比如這個(gè)項(xiàng)目里,它就打不開(kāi),需要手動(dòng)地加:libmysql.dll和qwt.dll 。然后新建目錄plugins,把sqldrivers目錄放進(jìn)plugins里,作為它的子目錄。和Release下的路徑一樣,在程序中已經(jīng)指定了,這里有點(diǎn)坑。在打包之前,運(yùn)行可執(zhí)行程序要沒(méi)問(wèn)題!

開(kāi)始打包:

運(yùn)行Enigma Virtual Box


注意要把所有需要的程序都添加進(jìn)來(lái),在 File Options 選項(xiàng)中,選擇Compress Files 壓縮。

然后點(diǎn)擊Process開(kāi)始打包,等待完成。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Qt是屬于一個(gè)跨平臺(tái)的GUI開(kāi)發(fā)軟件,支持的平臺(tái)有Unix、Linux、Windows/WinCE、IOS等。 Q...
    一葉之界閱讀 8,415評(píng)論 0 17
  • 【MySQL】Linux下MySQL 5.5、5.6和5.7的RPM、二進(jìn)制和源碼安裝 1.1BLOG文檔結(jié)構(gòu)圖 ...
    小麥苗DB寶閱讀 10,900評(píng)論 0 31
  • Qt作為跨平臺(tái)app開(kāi)發(fā)的主要工具和語(yǔ)言,應(yīng)用非常的廣泛。而在數(shù)據(jù)庫(kù)方面MySQL則受到用戶的青睞。那么如何將這兩...
    singularpt閱讀 2,038評(píng)論 0 0
  • 然后去健身~私教今天教我兩個(gè)。一個(gè)是腳踝的動(dòng)作。總之是轉(zhuǎn)腳。勾腳趾,腳趾壓地從外向內(nèi)轉(zhuǎn)。還有腹部的。向上抬起。肚子...
    09f70d5e7741閱讀 1,682評(píng)論 0 4
  • 曹操(155年-220年3月15日 ),字孟德,一名吉利,小字阿瞞,沛國(guó)譙縣(今安徽亳州)人。東漢末年杰出的政治家...
    摩輪下的約定閱讀 1,001評(píng)論 2 3

友情鏈接更多精彩內(nèi)容