之前完成该程序时用的电脑是用win7+Qt 5.4(32bit),台式机,使用的时候很神奇没有中文乱码和多余的换行符,但是之后由于种种原因,将程序挪到win10+Qt5.7(64bit)的环境中进行完善,出了许多问题,因此记下以便以后查阅(能找到出处的已注明出处,有问题请与我联系,邮箱:shlx1238@gmail.com) 。
①中文乱码:尝试了不少方法,但是Qt5.7上有很多方法已经用不了,只记下一种在win10+Qt5.7(64bit)下亲测有用的方法:
QString::FromLocal8bit("中文");
调用QString::FromLocal8bit()方法对字符串的编码进行转化。
②子窗口获得主窗口指针:
MainWindow *ptr = (MainWindow*)parentWidget(); //"parentWidget" very important. 获得父部件指针,同时需要类型强转.
此处以MainWindow为主窗口类型:使用时需包含相应的头文件。
这部分代码主要用于主窗口的隐藏与出现,用于实现当子窗口打开后隐藏主窗口,当子窗口关闭后显示主窗口。
③为发布程序打包作准备——添加Qt依赖库:
(注:该部分来自于https://www.cnblogs.com/jiangxueqiao/p/7676474.html,此处是转载)
- 将需要发布的exe(如test.exe),放到单独的目录。
- 在“开始菜单”启动
Qt 5.9.1 32-bit for Desktop (MSVC 2015)
,使用cd
命令进入第1步中的目录。 -
执行
windeployqt.exe test.exe --qmldir C:\Qt\Qt5.9.1\5.9.1\msvc2015\qml
命令。qmldir目录根据Qt版本和visual studio版本不同会步同,使用mingw也类似。
-
执行完上面的命令之后,相应的依赖库就会自动拷贝到exe所在的目录。
④打包:
http://blog.csdn.net/dongqing27/article/details/51668622
这篇博文中第二部分详细说明了如何打包,第一部分的方法在Qt5.7中并不适用,还是会缺少文件,应该是环境不同导致的。