初学QT踩过的坑

Posted by mudux on November 5, 2019

最近因项目需要,要做c++ UI界面,毫无疑问的选用qt,这里记录一下踩过的坑。

1. build directory

打开项目编译时,老是报错: Could not create directory "E:\Error in " Util.asciify("build-untitled-Desktop_Qt_5_6_2_MSVC2015_64bit-Debug")": TypeError: Property 'asciify' of object Core::Internal::UtilsJsExtension(0x251a700) is not a function",找了许久才发现是项目build构建目录的问题,默认 目录老是报错,要自己设为和当前project同级别的目录,见下图所示。 qt-build-directory 在上图中,我的project在E:\Project,则build directory设置为E:\build-Project-Desktop_Qt_5_8_0_MinGW_32bit-Release

2. 不同编译器问题

原始项目用的Qt5.8 Mingw 32bit 编译器,我刚开始时用Qt5.12.5 MSVC2017 64bit编译器,在visual studio下打开时编译报了许多语法错误,调了一会儿也没有解决。换到Qt creator下Mingw下则运行正常,现在还有点疑问,按道理编译器不同不会导致语法差别,待解决。

3. 编译问题

编译项目也可通过命令行内构建,对Mingw和MSVC两种不同的编译器有不同的命令。
(1) Mingw

  • qmake [path-to-dot-pro-file]
  • mingw32-make
  • mingw32-make check
  • mingw32-make install

(2) MSVC

  • qmake [path-to-dot-pro-file]
  • nmake
  • nmake check
  • nmake install 最稳定的方式还是在creator里面进行。

4. QtXlsx

QtXlsx是一个可在Qt5中读写创建修改Excel文件的库。使用QtXlsx有两种方式:
(1) 把Xlsx当作Qt5的附加模块

  1. 生成模块

    这里需要先安装Perl

    • 下载源码
    • 在源码目录构建工程
    • qmake
    • make
    • make install 这里按照编译器差别命令有所不同,见上述第三条
    • 添加bin,build,lib,modules中相关文件到Qt安装目录,可见qt 使用 xlsx库操作excel表格
  2. 使用模块
    • 添加QT += xlsx到项目.pro文件
    • 使用范例
      1
      2
      3
      4
      5
      6
      7
      8
      
         #include <QtXlsx>
         int main()
         {
             QXlsx::Document xlsx;
             xlsx.write("A1", "Hello Qt!");
             xlsx.saveAs("Test.xlsx");
             return 0;
         }
      

(2) 直接使用源码
使用方法见Usage(2): Use source code directly

5.设置应用图标

默认情况构建所得exe文件为一白色框文件,为了美观起见需要设置图标文件,可在.pro文件中添加RC_ICONS = icofilename.ico语句即可。

6.文件打包

首先需要在creator中构建release版本,然后把release文件夹对应的exe文件放在一个新的文件夹。在cmd进入这个文件夹,运行windeployqt filename.exe即可。
上述命令打包后在别的电脑上运行时经常报各种错误,基本都是缺少相关.dll文件。我这次报了应用程序无法正常启动0xc000007b的错误。怎么解决?推荐ProcessExplorer工具,下载链接见这里,使用方法见这里
但上述操作没有解决我的问题,然后我用了暴力解法,把mingw的bin目录下所有dll文件复制到项目包,然后逐个删除不相关的。

7. 安装包制作

推荐Inno Setup工具, Inno Setup 是一个免费的 Windows 安装程序制作软件,小巧、简便、精美是其最大特点,支持 pascal 脚本,能快速制作出标准 Windows2000 风格的安装界面,足以完成一般安装任务。下载在这里,具体使用方法可 参考这里

reference

Could not create directory
make install - qmake
QtXlsxWriter
qt 使用 xlsx库操作excel表格
QT之程序发布以及打包成exe安装包
Process Explorer Download
Inno Setup Download