无效使用不完整的类型Qt
Invalide use of incomplete type Qt
我有一个小问题:
finddialog.h
#ifndef FINDDIALOG_H
#define FINDDIALOG_H
class QDialog;
class QWidget;
class QLineEdit;
class QPushButton;
class QCheckBox;
class QLabel;
class FindDialog : public QDialog
{
Q_OBJECT
public:
FindDialog(QWidget *parent);
private slots:
void findClicked();
void enableFindButton(const QString &text);
signals :
void findNext(const QString &str, Qt::CaseSensitivity cs);
void findPrev(const QString &str, Qt::CaseSensitivity cs);
private:
QLabel *findLabel;
QLineEdit *textEdit;
QCheckBox *caseCheckBox;
QCheckBox *backwCheckBox;
QPushButton *findButton;
QPushButton *closeButton;
};
#endif // FINDDIALOG_H
finddialog.c
#include <QtWidgets>
#include "finddialog.h"
FindDialog::FindDialog(QWidget *parent) : QDialog(parent)
{
QPushButton *button = new QPushButton(this);
}
void FindDialog::findClicked()
{
}
void FindDialog::enableFindButton(const QString &text)
{
}
我收到一个QDialog
/QPushButton
无效使用不完整类型错误。
我已经在.cpp
文件中包含了QtWidget
,为什么它不起作用?
(Forward)声明对于基类类型是不够的。你必须提供定义(使QDialog
成为一个完整的类型),所以:
#include <QDialog>
在头文件中。请参见基类的正向声明。
根据你发布的代码,我不知道QPushButton
不完整的错误是从哪里来的(当然,如果你是#include <QtWidgets>
)。
如果你没有#include <QtWidgets>
(它有#include <QPushButton>
等),你就不能实例化这些不完整的类型,比如:
new QPushButton(this);
同样,这需要一个定义(QPushButton
需要的内存大小是多少?调用什么构造函数?只有当编译单元.cpp
文件中有定义时,这才是已知的)。
通过在finddialog.h
中正向声明QPushButton
和其他方法,编译器希望在一些链接文件中找到它们的构造函数和其他方法#include
使其工作所需的头文件。
相关文章:
- 使用QJsEngine在Qt中注册自定义类型
- 在Qt中注册自定义元类型的别名类型
- Qt/SQL - 从 QSqlQuery exec Stored Procedure 获取列类型和名称?
- QT如何检查表格小部件类型
- Qt 无法对类型"uint8_t"的参数进行排队,即使使用 qRegisterMetaType 也是如此
- Qt:无法对类型为"QProcess::P rocessError"的参数进行排队 - QProcess::P rocessError(FailedToStart)
- QT QT QBYTEARRAY无符号数据类型
- Qt 模型拖放 - 无法保存类型 QJsonValue
- 编译错误 QT - 无法从类型强制转换
- QT:错误 ["*"令牌之前的预期")",并且主窗口未命名类型]
- Qt QGraphicsSceneMouseEvent 访问不完整类型
- Qt - 在没有正则表达式的情况下,将 QString 拆分为几种类型的空格
- typedef 中的自定义类型为 Qt MetaType
- Qt C++ - 创建 QList<Myclass> - 不是参数 'T 的有效模板类型参数
- QT类型作为函数参数
- QT创建者C MSVC15:缺少类型的规范
- 确定QT中父型的类型
- 错误:'abc'没有名称类型 QT c++ GUI 应用程序
- 无效使用不完整的类型Qt
- HTTP POST中缺少的内容类型.QT使用Webview