我的 Qt 应用程序运行良好,终于在昨天,我设法创建了可执行文件并准备好分发。
虽然今天,我想添加更多功能,但每当我尝试在 Qt-designer 的 mainwindow.ui 中添加/删除 QWidget 时,无论是在 Release模式还是 Debug模式下运行应用程序时,更改都不会显示!。它总是显示旧版本(即:修改前)
为什么会发生这种情况以及如何解决这个问题?
更新:
我不得不提一下,在部署我的应用程序之后,我更改了应用程序名称如下:
- 打开Qt-creator,在.pro文件中,修改TARGET值
- 关闭QT-creator,进入源文件夹并重命名
- 在源文件夹中,也将 .pro 文件重命名
后来,我意识到无论何时我在 Qt-Designer 中更改任何内容,这些更改都不会在运行应用程序时发生。
最佳答案
这通常是由于混合了源代码构建和影子构 build 成的。这种情况最常发生,如果您让 Qt Creator 使用它的默认设置(使用影子构建目录),然后直接从源代码中的命令行构建。
Qt 应用程序构建生成一堆源文件,moc_*.cpp
(和相应的目标文件)和ui_*.h
。现在,如果您在 shadow build 目录和源目录中都有这些文件,那么首先使用源目录中的文件。因此,例如,您可以使用设计器编辑 GUI,并在影子构建目录中生成新的 ui_*.h
文件,但从未使用过,因为源目录中的版本已过时。
解决方案是从源目录中删除所有这些文件。如果您不小心将它们提交给版本控制,请确保也将它们从那里删除。如果您不确定自己在做什么,请先进行备份。
清理源目录的一种方法是使用 Qt 命令行进入那里,然后运行 qmake
,然后运行 make clean distclean
。那应该让它很干净。摆脱影子构建目录更容易:只需删除它们,因为它们只包含生成的文件。
注意你应该使用影子构建目录,它有很多好处(唯一的缺点是,如果你不小心用生成的文件污染了源目录,你就会遇到问题现在……)。
关于c++ - Qt: QWidget 在运行应用程序时不显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36034259/