QT Creator中ISO C++禁止使用未知类型的'QPushButton'声明

3

我在Linux Ubuntu 9.10机器上运行QT Creator。刚开始使用QT Creator时,我正在按照教程进行操作,但是在构建项目时出现了这个错误:“ISO C++禁止声明无类型的'QPushButton'”。这个问题出现在我的头文件中:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QtGui/QWidget>

namespace Ui
{
    class MainWindow;
}

class MainWindow : public QWidget
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = 0);
    ~MainWindow();

public slots:
    void addContact();
    void submitContact();
    void cancel();

private:
    Ui::MainWindow *ui;
    QPushButton *addButton;
    QPushButton *submitButton;
    QPushButton *cancelButton;
    QLineEdit *nameLine;
    QTextEdit *addressText;

    QMap<QString, QString> contacts;
    QString oldName;
    QString oldAddress;


};
#endif // MAINWINDOW_H
4个回答

7

我认为你只是缺少适当的头文件。你可以尝试:

#include <QtGui/QtGui> 

相反,或者如果您更喜欢的话
#include <QtGui/QPushButton>

1
哇,我得去踢自己一脚,因为忘记了这个! - Mohit Deshpande

5
实际上,仅使用前向声明就足够了,而不需要使用include:
class QPushButton;

在头文件中始终优先使用前向声明,并在 .cpp 文件中进行 include(对于大型项目,可以更快地编译并减少重新编译的次数)。


1

你缺少了这个:

#include <QtGui>

0
你可能还想检查一下.pro文件。
你有没有在某个地方有一个类似"QT = ..."的条目?如果有的话,尝试将其更改为"QT += ..."。Qt的核心和GUI模块是QT变量的默认设置,但可以被覆盖,这可能会导致编译器和/或链接器错误。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接