2010/04/23:Fixes : 更新批处理,以兼容WIN7。html
第一次系统地玩QT,因而诞生了此预备式:mysql
【QT版本4.6.0(VS2008编译版),开发平台推荐使用Qt Creator(最新1.3版),系统这里使用Windows Xp】sql
QT & Qt Creator & MySql安装:
QT:不知道QT开发人员怎么想的,老是跟空格过不去,安装QT时尽可能将其装在根目录下,路径中尽可能不要有中文,不然因为这问题出现诡异状况,GOOGLE都不必定好使~
Qt Creator:个人Qt Creator是在VS2008安装完成以后装的。装完Creator,它就默认使用VS编译器了(若是有问题,从VS环境变量、QT环境变量入手!)。但这也带来一个问题,就是调试器不能用GDB,要用微软的CDB(下载地址),在上面挑个最新版的下载安装。我这里Creator用的是1.3版的,对于CDB兼容性仍是有问题的,会提示找不到"dbgeng.dll"。这时须要把CDB安装文件夹中的"dbghelp.dll"拷贝到Creator的Bin目录下,完成后就能够正常使用CDB调试了。
MySql:MySql装上去一般会出现万恶的1067错误,针对该错误的解决方法可谓五花八门。这里MySql建议安装彻底版的(除非很了解MySql,否则就不要安装Essential版),装的时候也是尽可能挑英文无空格路径装,省得万一因路径出问题折腾。MySql的配置方法:数据库
@echo off
cd/d %~dp0
@echo Build DataBase ...
mkdir data
mkdir temp
copy /V /Y ".\my.ini" "%windir%\my.ini"
.\bin\mysqld.exe --defaults-file=".\my.ini" --console
@echo Failure.
pause
并运行该批处理。若是最后未出现Failure输出,则建立数据库成功!建立成功后,关闭Create.bat批处理运行窗口。app
@echo off
cd/d %~dp0
@echo Now Reinstall MySql Service ...
.\bin\mysqld.exe --remove
.\bin\mysqld.exe --install MySql
@echo Start Service ...
net start MySql
@echo done.
pause
并运行该批处理。人品不错的话,应该是顺利启动服务了,碰1067的话GOOGLE去吧~函数
@echo off
net stop MySql
echo done.
pause
并运行该批处理。关闭服务的批处理一般都是最好使的,双击即关闭。post
@echo off
net start MySql
echo done.
pause
关于带数据库驱动的QT程序的部署:在QT程序的main函数中,使用QCoreApplication::addLibraryPath()添加库文件加载路径。学习
QT的中文化
上面的已经准备完成了,能够开始编写QT程序了。用Designer拖个框啥的,上面的文字标签能够直接打中文(也可以正常显示),如今的Designer国际化方面作得已经很好了,默认就把全部界面标签文字转为可翻译的,这样方便将来对软件国际化。但若是使用如QMessageBox来弹个对话框,代码里打入中文会致使对话框最终显示出来为乱码。解决方案是:QT程序中全部用到字符串的地方,最好使用tr来把字符串括起来。一是方便对其国际化;二是能够在main函数中加入tr区域选择代码来消除乱码。修改后的main函数以下:ui
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
//设置tr以及地域。
QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GBK"));
QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));
//添加库加载路径。
QCoreApplication::addLibraryPath(QCoreApplication::applicationDirPath() + '/' + PLUGINS_NAME);
Widget w;
w.show();
return a.exec();
}
注意:tr只有在类中已经继承了QObject时才能够直接使用,不然可使用QObject::tr()。spa
作毕业设计要用到MySql,界面方面想用下QT,顺便学习一下QT的使用。上去就碰到问题,没有MySql的驱动(其实在.\Qt\4.6.0\plugins\sqldrivers目录下有,后来编译完了才发现,这里要崩溃一下~)。GOOGLE了一下,翻了翻网页,就开始编译驱动了。
这里使用QT4.6.0版本和VS2008自带的编译器
使用的命令行参数是:
qmake –o Makefile INCLUDEPATH+="D:\Program Files\MySQL\MySQL Server 5.1\include" LIBS+="D:\Program Files\MySQL\MySQL Server 5.1\lib\opt\libmysql.lib" mysql.pro
nmake
跟预料中的同样,编译出错,错误是"cannot find file: mysql.pro",费了半天劲终于发现我进入的目录是".\Qt\4.6.0\src\sql\drivers\mysql"而不是传说中的".\Qt\4.6.0\src\plugins\sqldrivers\mysql"(本目录才是正确路径!)。发生本错误的同志们必定要检查一下命令行的路径进的是否正确!
一个问题解决了,qmake成功完成,开始nmake。这里先是碰到了qsqlmysqld_resource.rc中找不到"WinVer.h"的错误。找了找,发现WinVer.h头文件竟然在Windows SDK的文件夹下,因而在".\Microsoft Visual Studio 9.0\Common7\Tools"中找到了vsvars32.bat设置环境变量的批处理,把该批处理拖入命令行窗口运行一遍(注意该批处理仅设置本次命令行窗口中的环境变量,并未修改注册表,因此每次打开个新命令行窗口都要运行一次批处理才可得到其中包含的环境变量设置!),再nmake,找不到WinVer.h的问题解决了。
再次nmake,此次问题就诡异了,竟然找不到"mysql.h"!但mysql.h已经在qmake的INCLUDEPATH参数中包含进去了,怎么可能找不到?郁闷,打开Makefile.Debug看看,发现里面INCLUDE进去的"D:\Program Files\MySQL\MySQL Server 5.1\include"每一个空格处都被认为是一个路径,好好的路径给分的希碎,qmake的智商过低了!无法,把MySQL Server 5.1文件夹下的include和lib文件夹直接拷贝到根目录下,这样INCLUDEPATH和LIBS路径均无空格,再次qmake、nmake,OK了!
总结:QT编译MySql驱动注意要点: