2010-12-07 34 views
26

有人在Qt設計器中寫過一個GUI,現在我必須修改一些小部分(即添加一個按鈕/功能)。Qt設計者不更新gui

前提條件: 我添加新功能/對Designer中的.ui文件進行任何修改。 我可以進入編輯模式,看到這會更改.ui文件的xml格式

問題: 當我構建並運行Qt時,舊版本的.ui是顯示的內容(沒有我功能升級)。 我試圖清理一切,並運行qmake,但無濟於事。

爲什麼會發生這種情況的任何想法?

回答

7

當您更改.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目錄中找到。

然後一旦你有了生成的頭文件,試着找到它在build目錄中的位置。然後重建。

2

我有同樣的問題,並能夠通過刪除構建目錄中的所有Makefile,然後從頭開始重建來解決它。由於某些原因,當您從Qt Creator運行Clean Project時,這些文件不會被刪除。

63

我遇到了同樣的問題,並在「項目」模式中禁用「Shadow Build」時解決了這個問題。

UPD: 這個答案仍然會收到upvotes讓我傷心的原因有二

  • 實在是小巫見大巫
  • 問題仍然存在,經過近5年
+3

這真的值得更多的選票!在我看來,這將是答案。 – PascalVKooten 2013-08-21 15:58:58

+1

這爲我解決了這個確切的問題。 .h文件沒有從XML中更新,直到我取消選中。 – Joshua 2013-09-08 17:01:33

1

同樣的問題爲了我。 直到我將安裝從Qt 5.0.2(MSVC 2010)更改爲Qt 5.0.2(mingw)後,才能正常工作。 現在它再次工作...有線

5

我可以解決這個問題,無變化影子構建配置。 在我的項目,我想和輸出文件打造成爲集結項目名 - 調試

但是,如果不是文件moc_FileName.cppui_FileName.h到build目錄QtCreator是不聰明檢查。 這個問題的發生是因爲,如果這些文件moc_FileName.cppui_FileName.h是到項目目錄中的QtCreator使用它們,不承認對的.ui文件的任何修改。

這個問題的解決方案很容易對我說: 從項目目錄中刪除所有moc_FileName.cppui_FileName.h重建。 這些文件將被創建到build-ProjectName-Debug並且所有修改都將在那裏。

1

我遇到了同樣的問題:構建後沒有出現UI變化。 上面提到的問題是,ui文件沒有被重新制作。

取消陰影構建解決了我的問題,但只有一次。之後,我再也看不到隨後的UI變化。所以我重新檢查了陰影構建並刪除了現有的陰影構建文件夾。現在,只要我刪除所有的構建文件,就可以一直運行。但這是跛腳。它應該能夠檢測到UI更改並重新制作文件。

我認爲這應該被記錄爲Qt Creator/Designer中的錯誤。

2

我通過clean然後build解決這個問題。我發現,如果我檢查Shadow Build,qtCreator將使用舊OBJ,除產生新的obj即使ui_xxx.h已經改變,生成.exe文件當調試agin.My環境是qt5.5 + msvc2013。

2

這是幫助我個人而言,添加到qmake的文件: UI_DIR = $$PWD

1

我刪除源文件夾中所有自動根文件。當我取消選中陰影構建時,自動生成文件在源文件夾中創建。之後當我檢查陰影構建時,編譯器只使用源文件夾的gen文件。所以我刪除了所有的自動生成文件(ui_ ,moc_),然後ui總是被更新。

0

如上所述,ui文件沒有被重新創建。對我來說,最簡單的解決方案就是實現重建而不是構建。無需每次都進入項目子菜單。 只要你的項目不是太大,這是好的(除了這是一個惱人的bug,qt已經很長時間了)