1.版本软件
QT:qt-opensource-windows-x86-5.9.5.exe,qt-opensource-windows-x86-5.12.1.exe(为什么会有两个,主要是因为我懒。。。后面详细说明)
VS:Visual Studio 2017
mysql:mysql+for+windows%28mysql-5.5.22-win32%29.msi,Navicat for MySQL_11.2.15.exe
2.安装
这里我首先安装了qt-opensource-windows-x86-5.9.5.exe,里面有mingw53_32,msvc2015_64,msvc2017_64三个。
Qtcreate中使用第一个,后面两个分别对应VS2015,VS2017的64位库文件。因为是随便找的三个版本,事前没有做调查,所以出了很多问题。QT的安装没有太多问题,百度一下就可以随便解决。
然后安装了VS2017,安装完成后,在VS2017上添加Qt的插件,如下图
一开始是安装不上,出下面的问题
(1)加载插件失败,让我去看ActivityLog.xml文件。
解决方法:VS右上角的消息里面,有一个更新,更新后,再加载就好了。
之后配置QT
将前面QT安装后的msvc2017的文件夹选中即可。
再来安装mysql,这个也没什么好说的,只是装之前没有注意版本,后面发现安装的是32位的。
安装 Navicat for MySQL_11.2.15.exe后,出现第二个麻烦的问题(当时很蒙蔽)
(2)mysql数据库IDE的左边没有显示连接的数据库信息,虽然连接成功了
解决方法:(查看里面,选择连接树就好了,简直不要太简单,但是当时还是重装了一次Navicat...)
到这软件就全部装好了,后面才是出问题的时候。
3.问题
1.VS上新建QT项目代码后,编译不了。需要选择刚刚添加的库文件包msvc2017_64
2.添加数据库,但是提示无法打开源文件“QSqlDatabase”,虽然我已经在pro文件中添加了QT +=sql,但是没有用
Qt\Qt5.9.5\5.9.5\msvc2017_64\bin下对应的libmysql.dll等库文件也是存在的,但是就是找不到。
解决方法:还是Qt Project Settings需要设置,Qt Modeules下的SQL默认是不勾选的,需要勾选上就可以。
其他的头文件,其实也是一样的原理。
3.连接数据库
在VS上一直连接不上,我就在Qt create上去尝试,一开始爆出的错误信息是
QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7
后面百度发现是因为:Qt\Qt5.9.5\5.9.5\mingw53_32\bin下面没有libmysql.dll
把数据库里面的libmysql.dll文件复制过去,QtCreate那边运行数据库就好了。
4.最难得VS2017连用QT代码连接数据库(能把我气死)
一开始只是爆出无法连接,后来改了一下代码
QMessageBox::critical(0, QObject::tr("无法打开数据库"),db.lastError().databaseText(), QMessageBox::Cancel);
然后打出了错误信息,如下:
driver not loade
也是搜索了很久,后来发现是因为mysql是32的,安装的QT的msvc2017是64位的。。。。。。关键是我安装的这个QT版本里面没有msvc2017_X86(32位)的,奔溃。。。。
在网上搜了很久msvc2017_X86,有一位老哥(出处:https://www.cnblogs.com/woniu201/ ),提供了免费的他编译好的msvc2017_X86文件包,但是下载下来后使用了才发现,还是不行。为什么呢???
他是Qt5.9.7的,我是5.9.5的。。。真的是吐血,和我原有的文件那些对不上。爆出了更多错误。
没办法,最后下载了qt-opensource-windows-x86-5.12.1.exe。里面有msvc2017_X86(32位)。所以相当于安装了两个版本的QT,其实不用装两个Qt,只需要重新装VS2015就好了,QT的2015的64位和32位都是有的。但是VS太大,太浪费时间。。所以还是算了吧。。。。
总结
今天真的是能把人气死,出了一大堆问题。不过记忆很深刻。现在在公司做的项目也是这样一个配置(除了数据库不太一样),所以想在家还可以把公司没想通的跑一跑,之气都是大佬给弄好,只要按着步骤一步一步点就好了,自己从头搞一次还是蛮有收获的。
以后想要搭配环境一定要先查好版本,以及对应版本支持的东西。不然真的是很难受。还有很多安装上的,运行上的小问题,记得都不是很清晰了。不过以后在遇到,应该很快就能想起来了。