【问题标题】:Qt designer does not update the guiQt 设计器不更新 gui
【发布时间】:2011-05-21 22:12:13
【问题描述】:

之前有人在 Qt 设计器中写了一个 GUI,现在我必须修改一些小部分(即添加一个按钮/功能)。

前提: 我在 Designer 中添加新功能/对 .ui 文件进行任何修改。 我可以进入编辑模式,看到这改变了 .ui 文件的 xml 格式

问题: 当我构建和运行 Qt 时,显示的是旧版本的 .ui(没有我的功能升级)。 我尝试清理所有内容并运行 qmake,但无济于事。

对为什么会发生这种情况有什么想法吗?

【问题讨论】:

标签: qt user-interface


【解决方案1】:

我有同样的问题,当我在“项目”模式下禁用“影子构建”时解决了。

UPD: 仍然收到对此答案的支持让我感到难过,原因有两个

  • 这是微不足道的
  • 近 5 年后问题仍然存在

【讨论】:

  • 这真的值得更多的投票!在我看来,这就是答案。
  • 这为我解决了这个确切的问题。在我取消选中此选项之前,不会从 XML 更新 .h 文件。
  • 旁注:在禁用“Shadow Build”选项后,我必须重新启动 QT 才能使其工作。
  • 幸运的是,我在与 Qt 设计师混了一个小时后看到了这一点。
  • 我尝试重新启用影子构建,但 qt-creator 停止识别我的更改(例如添加的 gui 项)。不知道为什么会这样。 @streppel我们可能正在使用不同的操作系统,但是在取消选中Shadow Build框后我不必重新启动QT即可使其工作。 (Gentoo + QT 5.6.1)
【解决方案2】:

我可以通过更改 Shadow Build 配置来解决这个问题。 在我的项目中,我想将输出文件构建到 build-ProjectName-Debug

但是 QtCreator 并不聪明地检查是否没有文件 moc_FileName.cppui_FileName.h 进入构建目录。 出现此问题是因为如果这些文件 moc_FileName.cppui_FileName.h 位于项目目录中,QtCreator 会使用它们并且无法识别对 .ui 的任何修改strong> 文件。

这个问题的解决方案对我来说很容易: 从项目目录中删除所有 moc_FileName.cppui_FileName.h重建。 这些文件将被创建到 build-ProjectName-Debug 中,所有修改都将在那里。

【讨论】:

  • 为我解决了问题!谢谢。
  • 有道理...!
【解决方案3】:

当您更改.ui 文件时,需要有人在该文件上运行uic.exe 以生成头文件。例如,对于名为MyWindow.ui 的窗口,这将生成一个名为ui_MyWindow.h 的文件。

这就是重建应用程序时使用的内容。

您没有指定构建方式或在什么操作系统上,因此很难在这方面为您提供帮助。如果您使用的是 Visual Studios,则可以将您的 .ui 文件集成到您的项目中,这样当您更改任何 .ui 文件时,将自动重新创建所有生成的文件。如果您使用的是.pri 文件,也可以这样做。

无论如何,我都会跑:

uic.exe -o ui_yourfile.h yourfile.ui

请将文件名更改为您正在使用的文件名。 uic.exe 可以在你的 Qt bin 目录中找到。

然后,一旦你有了生成的头文件,尝试在构建目录中找到它的位置。然后重建。

【讨论】:

    【解决方案4】:

    我通过cleanthenbuild解决了这个问题。我发现,如果我检查Shadow Build,qtCreator将使用旧的.obj,而不是生成新的.obj,即使ui_xxx.h已经改变,调试agin时生成.exe。我的环境是qt5.5 + msvc2013。

    【讨论】:

      【解决方案5】:

      这对我个人有帮助,添加到 qmake 文件中: UI_DIR = $$PWD

      【讨论】:

      • 这比取消选中影子构建效果更好,因为重建可确保在 .ui 文件上执行 moc 步骤。无需禁用影子构建(这似乎会破坏其他东西)。使用 Qt 5.15.4。
      【解决方案6】:

      我遇到了同样的问题,并且能够通过删除构建目录中的所有 Makefiles 来解决它,然后从头开始重建。出于某种原因,当您从 Qt Creator 运行 Clean Project 时,这些文件不会被删除。

      【讨论】:

        【解决方案7】:

        对我来说同样的问题。 在我将安装从 Qt 5.0.2 (MSVC 2010) 更改为 Qt 5.0.2 (mingw) 之前,没有任何效果。 现在它又开始工作了……有线

        【讨论】:

          【解决方案8】:

          我遇到了同样的问题:构建后没有出现 ui 更改。 上面提到的问题是ui文件没有被重新制作。

          取消选中影子构建为我解决了这个问题,但只解决了一次。之后我再也看不到后续的 ui 更改。所以我重新检查了影子构建并删除了现有的影子构建文件夹。只要我删除所有构建文件,这现在就一直有效。但这很蹩脚。它应该能够检测 ui 更改并重新制作文件。

          我认为这应该在 Qt Creator/Designer 中记录为错误。

          【讨论】:

            【解决方案9】:

            我删除了源文件夹中的所有自动生成文件。当我取消选中影子构建时,在源文件夹中创建了自动生成文件。当我检查影子构建后,编译器只使用源文件夹的 gen 文件。所以我删除了所有自动生成文件(ui_,moc_),然后 ui 总是更新。

            【讨论】:

              【解决方案10】:

              就我而言,问题是由 .ui 文件的重命名引起的。 Qt Creator 没有更新表单对应的.cpp 文件中头文件“ui_[name_of_ui_file].h”的#include。无论如何,清理 shadow build 文件夹中的所有“ui_*.h”文件解决了这个问题(我猜在 Project 选项卡中取消选中“shadow build”会产生相同的效果)。

              【讨论】:

                【解决方案11】:

                您是否一直在使用系统日期或时间,或者它们与您同事的计算机不同?为了测试目的,我将时间更改为几个小时后(同时编译项目),并且在将其恢复到当前时间后,编译的文件没有更新,因为它们比编译时间更新。运行 Clean 并没有删除这些文件。取消选中Shadow build 选项只会给我带来崩溃和无法追踪的0xc0000135 错误。从构建目录中手动删除具有未来日期/时间的 moc_*.o 和 *.cpp 文件并再次编译整个项目是我的解决方案。

                【讨论】:

                  【解决方案12】:

                  如上所述,不会重新创建 ui 文件。对我来说,最简单的解决方案就是点击 Rebuild 而不是 Build。无需每次都进入项目子菜单。 只要你的项目不太大,就可以了(除了这是qt多年来一直存在的一个令人讨厌的错误)

                  【讨论】:

                  • 如果没有构建,因为它是一个 Python 项目,由于某种原因 ui_main.py 没有与 ui_main.ui 一起保存?
                  • 看起来像 pyside-uic input -o output.py 应该这样做,但由于某种原因实际上并没有输出可运行的 Python。
                  【解决方案13】:

                  我遇到了同样的问题,然后意识到我已经手动修改了 .pro 文件:那是我做了“非法”的东西 - 将 mainwindow.ui 移到 DISTFILES 下(默认情况下,所有 ui 文件都在 FORMS 下分组)。

                  返回FORMS,现在一切正常

                  【讨论】:

                    【解决方案14】:

                    将以下行添加到 .pro 文件中

                       UI_DIR = $$PWD
                    

                    【讨论】:

                      猜你喜欢
                      • 2012-12-04
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 2016-11-24
                      • 2010-09-28
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      相关资源
                      最近更新 更多