我只想忽略用户在Qt,C ++中抛出的关闭事件
我尝试了the docs of 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
答案 0 :(得分:2)
解决方案是您需要在头文件中声明将覆盖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();
}