Некоторые проблемы с Qt (C ++) - PullRequest
0 голосов
/ 06 августа 2011

main.cpp

#include <QtGui>
#include <QApplication>


int main(int argv, char **args)
{
    QApplication app(argv, args);

    QTextEdit textEdit;
    QPushButton quitButton("Quit");

    QObject::connect(&quitButton, SIGNAL(clicked()), qApp, SLOT(quit()));

    QVBoxLayout layout;
    layout.addWidget(&textEdit);
    layout.addWidget(&quitButton);

    QWidget window;
    window.setLayout(&layout);
    window.show();

    return app.exec();        
}

notepad.cpp

#include <QtGui>
#include <QApplication>

class Notepad : public QMainWindow
{


    Notepad::Notepad()
    {
        saveAction = new QAction(tr("&Open"), this);
        saveAction = new QAction(tr("&Save"), this);
        exitAction = new QAction(tr("E&xit"), this);

        connect(openAction, SIGNAL(triggered()), this, SLOT(open()));
        connect(saveAction, SIGNAL(triggered()), this, SLOT(save()));
        connect(exitAction, SIGNAL(triggered()), qApp, SLOT(quit()));

        fileMenu = menuBar()->addMenu(tr("&File"));
        fileMenu->addAction(openAction);
        fileMenu->addAction(saveAction);
        fileMenu->addSeparator();
        fileMenu->addAction(exitAction);

        textEdit = new QTextEdit;
        setCentralWidget(textEdit);

        setWindowTitle(tr("Notepad"));
    }
    Q_OBJECT

public:
    Notepad();

    private slots:
        void open();
        void save();
        void quit();

private:
    QTextEdit *textEdit;

    QAction *openAction;
    QAction *saveAction;
    QAction *exitAction;

    QMenu *fileMenu;
};

ОШИБКА:

дополнительная квалификация 'Блокнот ::' в блокноте участника (строка 8)

notepad :: notepad () не может быть перегружен (строка 32)

с блокнотом :: блокнот (строка 8)

Почему я получаю эти ошибки? Конструктор выглядит хорошо, а настройка класса выглядит хорошо. Но я получаю эти ошибки.

Ответы [ 2 ]

2 голосов
/ 06 августа 2011

Notepad:: перед вашим конструктором Notepad() внутри класса Notepad не требуется. Это не более поздняя декларация, потому что вы сделали это и определили это (хотя и в частном порядке) выше. Возможно, вы захотите разделить его на заголовок и файл cpp.

По-прежнему существуют различные другие проблемы с кодом, который вы опубликовали, но опубликованные вами ошибки, скорее всего, вызваны тем, что я упоминал выше.

1 голос
/ 06 августа 2011
  • Вы указали встроенный частный конструктор с Notepad::
  • Затем вы неправильно перегрузили этот закрытый конструктор как открытый во втором объявлении
  • Q_OBJECT макрос должен быть первым в объявлении класса перед методами и членами.
  • У вас есть как минимум 4 утечки памяти для каждого экземпляра Notepad?
  • и т.д.

Может, поднять книгу?

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