Qt:"closeEvent"的外线定义与"MainWindow"中的任何声明都不匹配



我只想忽略用户在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

解决方案是您需要在头文件中声明您将覆盖 closeEvent。在文档中,您可以 se 这是虚拟保护的,这意味着您可以覆盖它。

您的代码应如下所示:

头文件:

#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();
}

相关内容

最新更新