Qt: внешнее определение "closeEvent" не соответствует ни одному объявлению в "MainWindow" - PullRequest
0 голосов
/ 25 апреля 2019

Я просто хочу игнорировать закрывающее событие, генерируемое пользователем в Qt, C ++

Я пробовал то, что уже есть в документах Qt

void MainWindow::closeEvent(QCloseEvent *event)
{
    event->ignore();
}

Но это бросает мне ошибку out-of-line definition of "closeEvent" does not match any declaration in "MainWindow".Я ожидаю игнорировать событие закрытия.

Заголовочный файл:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QWidget>

namespace Ui {
class MainWindow;
}

class MainWindow : public QWidget
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
};
-
#endif // MAINWINDOW_H

1 Ответ

2 голосов
/ 25 апреля 2019

Решение состоит в том, что вам нужно объявить в заголовочном файле, что вы переопределите closeEvent. В документах вы можете видеть, что виртуально защищен, это означает, что вы можете переопределить его.

Ваш код должен быть следующим:

Заголовочный файл:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QWidget>

namespace Ui {
class MainWindow;
}

class MainWindow : public QWidget
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

protected:
    void closeEvent(QCloseEvent *event) override;

private:
    Ui::MainWindow *ui;
};
-
#endif // MAINWINDOW_H

Файл cpp:

void MainWindow::closeEvent(QCloseEvent *event)
{
    event->ignore();
}

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