解决QT:forward declaration of 'struct Ui::xxx';invalid use of incomplete struct &q

Posted lxjshuju

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决QT:forward declaration of 'struct Ui::xxx';invalid use of incomplete struct &q相关的知识,希望对你有一定的参考价值。

        今天在进行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中将这个uiwidget或者dialog或者mainwindow的名字改动为错误里提及的“struct Ui::Widget”中的Widget。总之。要保持ui文件里class项的值与uiwidgetdialogmainwindowObjectName同样




以上是关于解决QT:forward declaration of 'struct Ui::xxx';invalid use of incomplete struct &q的主要内容,如果未能解决你的问题,请参考以下文章

使用friend和forward declaration解决循环引用的问题

Receiver type ‘X’ for instance message is a forward declaration

Qt错误:QMessageBox: No such file or directory错误:'QsqlDatabase' has not been declared

在QT编程中 出现iso c++ forbids declaration of 'bitset' with no type

Qt国际化(Q_DECLARE_TR_FUNCTIONS() 宏给非Qt类添加翻译支持,以前没见过QTextEncoder和QTextDecoder和QLibraryInfo::location()和

qt诡异的编译错误( forbids declaration of `parameter' with no type)