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