Qt中修改了UI文件后编译,修改总是不生效问题的解决办法

遇到过几次,采取了以下措施仍不生效,编译后运行仍显示修改前的界面。Qt新手遇到这个问题可能抓瞎了,下面的解决办法可以参考一下:

  1. 重新执行qmake

  2. 重新执行qmake,清理项目,重新构建项目

  3. 把build目录下所有编译过程生成的文件全部删除,只保留目录结构,再重新构建项目

  4. 把工程目录下的.user文件删除,只保留工程文件、头文件、源文件、UI文件,然后重新运行qt creator,重新配置项目,再进行编译。

采取以下措施后,修改生效:

  1. 原本工程使能了shadow build,将该项勾选去掉,编译后发现修改生效了;

  2. 重新勾选shadow build,重新编译发现修改也生效了。再修改一次界面,再次编译,发现又没有生效。

猜测原因:

  1. 之前从另一台设备复制了代码过来,可能把.user文件一起复制过来了,那台设备上没有勾选shadow build,直接复制过来导致设置有冲突?

实际原因:

  1. 确实跟复制代码有关,但没有复制.user文件,而是在不勾选shadow build时,编译生成的ui_xxxxx.h文件放在源码目录下,复制代码时一起复制了过来,导致本地工程编译时虽然在build目录下生成了新的ui_xxxxx.h文件,但编译时引用的总是源码目录下的旧ui_xxxx.h文件,所以修改一直没被编译进去。

最终解决办法:

  1. 勾选shadow build,将工程目录下的ui_xxxxx.h文件全部删除,重新编译,问题解决!

教训:

  1. 切换shadow build模式时,一定要检查是否遗留了ui_xxxx.h文件忘记删除了。

你可能感兴趣的:(Qt编程学习与实践)