c++ - Qt: QWidget 在运行应用程序时不显示?

标签 c++ qt qt-creator qwidget

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

虽然今天,我想添加更多功能,但每当我尝试在 Qt-designer 的 mainwindow.ui 中添加/删除 QWidget 时,无论是在 Release模式还是 Debug模式下运行应用程序时,更改都不会显示!。它总是显示旧版本(即:修改前)

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

更新:

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

  1. 打开Qt-creator,在.pro文件中,修改TARGET值
  2. 关闭QT-creator,进入源文件夹并重命名
  3. 在源文件夹中,也将 .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/

相关文章:

c++ - 防止在 C++ 中删除指针

c++ - 在 std::thread 或 pthread_create 中创建的 QObject 的 QThreadData 是什么

c++ - 使用MSVC 2017编译器在Qt Creator中进行调试

c++ - 如何在 Qt Creator 上使用 pthread

c++ - Qt Creator 重构和 C++ 模板

c++ - 提升图形库 : possible to combine Bundled Properties with Interior Properties?

c++ - 在 C++ 中对多维数组进行排序

c++ - 简单的结构对齐/填充问题

c++ - 尝试在 Visual Studio 2013 中创建 Web 服务器对象的新实例时抛出错误

css - 无法在 qt 中设置伪状态的字体粗细