C++ Qt QCloseEvent 不起作用

C++ Qt QCloseEvent doesn't work

本文关键字:不起作用 QCloseEvent Qt C++      更新时间:2023-10-16

我想创建一个消息,当用户按"退出"按钮时,该消息出现在新窗口中。因此,我创建了一个QCloseEvent,但是MainWindow实际上根本没有关闭。我究竟做错了什么?

mainwindow.h

class MainWindow : public QMainWindow
{
    Q_OBJECT
public:
    //Constructor
    explicit MainWindow(QWidget *parent = 0);
    //Destructor
    ~MainWindow();
public slots:
    void closeMainWindow();
private:
    QCloseEvent *event;

mainwindow.cpp

void MainWindow::closeMainWindow(){
    event = new QCloseEvent();
    QMessageBox::StandardButton answer = QMessageBox::question(
                this,
                tr("Close the Window"),
                tr("Do you want to close the window?"),
                QMessageBox::Yes | QMessageBox::No);
    if(answer == QMessageBox::Yes){
        event->accept();
    }
    else
        event->ignore();
}

您必须实现MainWindow的CloseEvent功能!

例如

void MyMainWindow::closeEvent(QCloseEvent *event)
{
    QMessageBox::StandardButton answer = QMessageBox::question(
                this,
                tr("Close the Window"),
                tr("Do you want to close the window?"),
                QMessageBox::Yes | QMessageBox::No);
    if(answer == QMessageBox::Yes){
        event->accept();
    }
    else
        event->ignore();
}

您缺少关闭()函数

if(answer == QMessageBox::Yes)
{
  event->accept();
  close();
}

或MainWindow的CloseEvent()函数

请参阅下面的链接:生成QCloseEvent不会关闭QMainWindow