第一个Qt项目小结

第一次做Qt,这里把主要的坑列出来。

连接Mysql

Qt连接mysql的时候,会遇到:

QSqlDatabase:QMYSQL driver not loaded

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

mysql驱动的问题。

Qt 是自带了mysql的驱动,但库的版本不对,需要重新编译。

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

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

1.先去官网: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.打开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)

也可以在开始目录下找到QT的文件夹,从里面直接打开。

4.编译

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

4.2:执行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 已经新生成了动态库,将它拷贝到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.关闭QT,重新打开


QWT库的使用

Qwt是Qt的一个第三方库,使用的时候,需要加载这个库。因为显示流量和包流量图用的就是这个库。

Qt版本:5.4.0

Qwt版本:6.1.2

第一步 在官网:https://sourceforge.net/projects/qwt/files/qwt/6.1.2/下载这个库,解压,放到Qt安装目录下。

第二步:打开qwt.pro,编译qwt库

编译之前,打开qwtbuild.pri ,把第30 行的CONFIG           += debug_and_release  添加注释

然后构建工程。

第三步:库文件的拷贝

1.构建的时候,会在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 复制到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 复制到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 复制到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\目录下

第四步:在项目中使用qwt库

在项目文件.pro 中,加入以下几条语句:

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打开就可以搜索到qwt控件了。


编译Release版本

在Debug版本直接切换编译Release版本会出现以下问题:

Must construct aQApplication before a QPaintDevice

这是因为把Debug库和Release库混合了的原因。

在*.pro文件中,把链接库切换为Release的版本,构建项目后,打开可执行文件,看缺少哪些库,把缺少的库放到可执行文件的目录下。此时需要注意的是:库文件要从mingw491_32\bin下拷贝,不能从Tools\QtCreator\bin下拷贝。

还需要把libmysql.dll  和qwt.dll拷贝到可执行文件路径下。然后在可执行目录下建一个二级目录: plugins\sqldrivers\ 在这个目录下放入mysql库:qsqlmysql.dll。plugins目录是我在程序中指定了。如果不指定,就会提示连接数据库失败,好奇怪。


打包程序

需要用到两个工具,Qt自带的windeployqt 这个工具可以自动添加可执行文件所依赖的库。还有一个工具叫做 Engima Virtual Box 是用来真正打包的!

把可执行程序test.exe放到一个空目录比如 D:\demo\下

打开Qt自带的命令行,跳到D:\demo\

执行:windeployqt test.exe


这一步会把可执行程序依赖的文件都添加进来,直接打开可执行文件就能运行了,如果不能运行,就把缺少的库加进来,比如这个项目里,它就打不开,需要手动地加:libmysql.dll和qwt.dll 。然后新建目录plugins,把sqldrivers目录放进plugins里,作为它的子目录。和Release下的路径一样,在程序中已经指定了,这里有点坑。在打包之前,运行可执行程序要没问题!

开始打包:

运行Enigma Virtual Box


注意要把所有需要的程序都添加进来,在 File Options 选项中,选择Compress Files 压缩。

然后点击Process开始打包,等待完成。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342

推荐阅读更多精彩内容