Qt:当 运行 应用程序时,QWidget 不显示?

Qt: QWidget doesn't show when running the application?

我的 Qt 应用程序运行良好,终于在昨天,我设法创建了可执行文件并准备好分发。

虽然今天,我想添加更多功能,但每当我尝试 add/remove QWidget 到 Qt-designer 上的 mainwindow.ui 时,更改从未在 运行 应用程序中显示在发布或调试模式下!它总是显示旧版本(即:修改前)

为什么会发生这种情况以及如何解决这个问题?

更新:

我不得不提一下,在部署我的应用程序后,我将应用程序名称更改为如下:

  1. 打开Qt-creator,在.pro文件中,修改TARGET值
  2. 关闭 QT-creator,转到源文件夹并重命名它
  3. 在源文件夹中,也重命名了 .pro 文件

后来,我意识到无论何时我在 Qt-Designer 中更改任何内容,这些更改都不会在 运行 应用程序中发生。

这通常是由于混合了源代码构建和影子构建造成的。这最常发生,如果你让 Qt Creator 使用它的默认设置(使用影子构建目录),然后直接从源代码中的命令行构建。

Qt 应用程序构建生成一堆源文件,moc_*.cpp(和相应的目标文件)和ui_*.h。现在,如果您在 shadow build 目录和源目录中都有这些文件,那么首先使用源目录中的文件。因此,例如,您可以使用设计器编辑 GUI,并在影子构建目录中生成新的 ui_*.h 文件,但从未使用过,因为源目录中的版本已过时。

解决方案是从源目录中删除所有这些文件。如果您不小心将它们提交给版本控制,请确保也将它们从那里删除。如果您不确定自己在做什么,请先进行备份。

清除源目录的一种方法是使用 Qt 命令行进入该目录,然后是 运行 qmake,然后是 运行 make clean distclean。那应该让它很干净。摆脱影子构建目录更容易:只需删除它们,因为它们只包含生成的文件。

注意你应该使用影子构建目录,它有很多好处(唯一的缺点是,如果你不小心用生成的文件污染了源目录,你得到了你现在遇到的问题......)。