解決QT:forward declaration of 'struct Ui::xxx';invalid use of incomplete struct "Ui::Widget" 等莫名奇異錯誤
阿新 • • 發佈:2017-05-12
執行 center dex text nco jsb ims complete class
今天在進行QT Widget的UI設計時,改了下Widget的對象名,然後在多次成功編譯執行後,執行清理,又一次構建,就出現了好多莫名奇異的錯誤:
widget.h:12: 錯誤:forward declaration of ‘struct Ui::Widget‘
widget.cpp:8: 錯誤:invalid use of incomplete type ‘struct Ui::Widget‘
網上搜索發現是每當你新鍵一個 QT設計界面, QT會自己主動生成yyy.ui文件,如Widget.ui,因為我直接新建的GUI程序,同一時候也生成了相應的類。Widget,這時我改變了UI的對象名。類裏卻仍然使用了Widget這個類名。因此會導致出錯。
解決方法是,先把有moc生成的ui_widget.h(與xxx.ui相應的)刪掉。然後將界面的對象名設置為,
namespace Ui {
class Widget;
}
中相應的類名。也就時:在ui中將這個ui裏widget或者dialog或者mainwindow的名字改動為錯誤裏提及的“struct
Ui::Widget”中的Widget。總之。要保持ui文件裏class項的值與ui中widget或dialog或mainwindow的ObjectName同樣!
解決QT:forward declaration of 'struct Ui::xxx';invalid use of incomplete struct "Ui::Widget" 等莫名奇異錯誤