Qt设计师没有更新gui

时间:2010-12-07 23:13:57

标签: qt user-interface

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

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

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

为什么会发生这种情况的任何想法?

14 个答案:

答案 0 :(得分:90)

我遇到了同样的问题,当我在“项目”模式中禁用“Shadow Build”时,它就解决了。

<强> UPD : 仍然收到这个答案的赞成票让我感到悲伤有两个原因

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

答案 1 :(得分:9)

我可以在不改变 Shadow Build 配置的情况下解决这个问题。 在我的项目中,我想用输出文件构建到 build-ProjectName-Debug

但QtCreator并不聪明地检查构建目录中的文件 moc_FileName.cpp ui_FileName.h 。 出现此问题的原因是,如果这些文件 moc_FileName.cpp ui_FileName.h 进入项目目录,QtCreator将使用它们并且无法识别对 .ui的任何修改文件。

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

答案 2 :(得分:8)

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

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

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

无论如何,我会跑:

uic.exe -o ui_yourfile.h yourfile.ui

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

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

答案 3 :(得分:3)

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

答案 4 :(得分:3)

这是帮助我个人的,添加到qmake文件: UI_DIR = $$PWD

答案 5 :(得分:2)

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

答案 6 :(得分:1)

对我来说同样的问题。 在将安装从Qt 5.0.2(MSVC 2010)更改为Qt 5.0.2 (mingw)之前,没有任何作用。 现在它再次工作......有线

答案 7 :(得分:1)

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

取消选中阴影版本为我解决了问题,但只解决了一次。之后我再也看不到后续的ui变化了。所以我重新检查了阴影构建并删除了现有的阴影构建文件夹。现在,只要我删除所有构建文件,它就能一致地工作。但那太蹩脚了。它应该能够检测到ui变化并重新制作文件。

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

答案 8 :(得分:1)

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

答案 9 :(得分:1)

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

答案 10 :(得分:1)

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

答案 11 :(得分:0)

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

答案 12 :(得分:0)

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

返回到表格,现在一切正常

答案 13 :(得分:0)

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

   UI_DIR = $$PWD
相关问题