【问题标题】:ISO C++ forbids declaration of 'QPushButton' with no type in QT CreatorISO C++ 禁止在 QT Creator 中声明没有类型的“QPushButton”
【发布时间】:2011-12-17 13:00:30
【问题描述】:

我在 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

【问题讨论】:

    标签: c++ qt qt-creator


    【解决方案1】:

    我认为您只是缺少适当的头文件。可以试试吗

    #include <QtGui/QtGui> 
    

    取而代之,或者如果您愿意

    #include <QtGui/QPushButton>
    

    【讨论】:

    • 哇。我得去踢自己忘记这一点!
    【解决方案2】:

    实际上,前向声明就足够了,而不是包含:

    class QPushButton;
    

    总是喜欢在头文件中进行前向声明,并在 .cpp 中进行包含 (在大型项目中更快、更少的重新编译)。

    【讨论】:

      【解决方案3】:

      你错过了这个:

      #include <QtGui>
      

      【讨论】:

        【解决方案4】:

        您可能还想检查 .pro 文件。
        你在某处有类似“QT = ...”的条目吗?如果是这样,请尝试将其更改为“QT += ...”。 Qt 的 Core 和 GUI 模块是 QT 变量的默认设置,但可以被覆盖,这将导致编译器和/或链接器错误。

        【讨论】:

          猜你喜欢
          • 2011-08-21
          • 1970-01-01
          • 1970-01-01
          • 2015-10-31
          • 2020-12-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多