ISO C ++ запрещает объявление «QPushButton» без типа в QT Creator - PullRequest
3 голосов
/ 24 апреля 2010

Я использую QT Creator на компьютере с Linux Ubuntu 9.10. Я только начал работать с 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 голосов
/ 24 апреля 2010

Я думаю, вам просто не хватает соответствующего заголовочного файла. Можете ли вы попробовать

#include <QtGui/QtGui> 

вместо этого или, если вы предпочитаете

#include <QtGui/QPushButton>
5 голосов
/ 24 апреля 2010

На самом деле будет достаточно предварительного объявления вместо включения:

class QPushButton;

Всегда предпочитайте предварительные объявления в заголовках и делайте включение в .cpp (быстрее и меньше перекомпиляций в больших проектах).

1 голос
/ 17 декабря 2011

Вам не хватает этого:

#include <QtGui>
0 голосов
/ 26 апреля 2010

Вы также можете проверить файл .pro.
У вас есть где-нибудь запись типа "QT = ..."? Если это так, попробуйте изменить это на «QT + = ...». Ядро Qt и модуль GUI являются настройками по умолчанию для переменной QT, но МОГУТ быть перезаписаны, что приведет к ошибкам компилятора и / или компоновщика.

...