程序发布的话非静态编译 必须带上所有的dll动态连接库
没有带上动态链接库的话 程序运行时会提示缺少XXX.dll
只要在qt安装目录内找到相应的dll复制到exe程序所在目录内就可以了
譬如我现在windows下的qt安装在C:/Qt/2010.04 提示缺少QtCore4.dll QtGui4.dll QtSql4.dll libgcc_s_dw2-1.dll 这四个连接库
则只需要将C:/Qt/2010.04/qt/bin文件夹下的相应动态链接库拷贝到程序目录内就可以运行
QtCore4.dll是核心链接库 QtGui4.dll是图形界面库 QtSql4.dll 是数据库操作的动态连接库 libgcc_s_dw2-1.dll 这是Gcc库
而所有用到数据库的程序在发布的时候还需要将数据库驱动附带一起发布
比如我用的是sqlite数据库
则我需要将 C:/Qt/2010.04/qt/plugins/sqldrivers下的qsqlite4.dll附带发布
方法是先在main.cpp下制定链接库路径
QApplication::addLibraryPath("./plugins");
因为我在程序目录下建立了一个文件夹名为plugins/sqldrivers 所以我将路径设置为./plugins 然后将C:/Qt/2010.04/qt/plugins/sqldrivers下的qsqlite4.dll复制到plugins/sqldrivers 下
同理 我需要qcncodecs4.dll连接库插件 就在plugins下添加codecs目录并将C:/Qt/2010.04/qt/plugins/codecs/qcncodecs4.dll
复制到程序所在目录下的plugins下的codecs
用到ico图标的话 还需要复制qico4.dll 在C:/Qt/2010.04/qt/plugins/imageformats下
其它的库可以自己按需要到C:/Qt/2010.04/qt/plugins下去找 注意保持目录树的一致性
下面说一下中问翻译的方法
比如如下代码QMessageBox::warning(this,"",ui->lineEdit_2->text(),QMessageBox::Yes,QMessageBox::No);
不翻译的情况下 messagebox显示的两个按钮是yes和no
而我们想要显示的文字 “是”和“否”
方法是复制C:/Qt/2010.04/qt/translations/qt_zh_CN.qm到程序所在目录
然后在main.cpp加入#include <QTranslator>
接着在main函数内添加如下代码
QTranslator translator(0); translator.load("qt_zh_CN.qm"); //QApplication a(argc, argv); a.installTranslator(&translator);
这样就能将显示中文了