解决Qt中'invalid use of incomplete type'错误:以Ui::Users为例

在Qt开发过程中,你可能会遇到如下错误信息:

G:\Qt\Smarthome_Client\users.cpp:9: error: invalid use of incomplete type 'class Ui::Users'
     ui(new Ui::Users)
                ^

这个错误提示意味着你在使用Ui::Users之前,编译器并没有找到它的完整定义。

原因分析:

Qt的ui文件在编译时会生成对应的头文件(例如ui_users.h),其中包含了UI界面元素的定义。你需要在使用Ui::Users之前,确保包含了这个生成的ui_users.h头文件。

解决方案:

以下两种方法可以解决这个问题:

方法一:在users.cpp中包含头文件

在你的users.cpp文件中,添加以下两行代码:

#include 'users.h'
#include 'ui_users.h'

Users::Users(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Users)
{
    ui->setupUi(this);
}

方法二:在users.h中包含头文件

你也可以选择在users.h头文件中包含ui_users.h

#include <QWidget>
#include 'ui_users.h'

class Users : public QWidget
{
    Q_OBJECT

public:
    explicit Users(QWidget *parent = nullptr);

private:
    Ui::Users *ui;
};

总结:

无论你选择哪种方法,关键在于确保在使用Ui::Users之前,包含了定义它的ui_users.h头文件。这将保证编译器能够找到Ui::Users的完整定义,从而避免'invalid use of incomplete type'错误。

解决Qt中'invalid use of incomplete type'错误:Ui::Users示例

原文地址: https://www.cveoy.top/t/topic/fAD1 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录