要实现在Qt点击关闭按钮弹出提示窗口的功能,可以重写QWidget的closeEvent()函数。在该函数中,可以创建一个QMessageBox来显示提示窗口,并询问用户是否确认退出。

下面是一个示例代码:

#include <QtWidgets>

class MyWidget : public QWidget
{
public:
    MyWidget(QWidget *parent = nullptr) : QWidget(parent)
    {
        // 创建一个按钮
        QPushButton *button = new QPushButton("关闭", this);
        connect(button, &QPushButton::clicked, this, &QWidget::close);
    }

protected:
    void closeEvent(QCloseEvent *event) override
    {
        // 创建一个提示窗口
        QMessageBox::StandardButton resBtn = QMessageBox::question(this, "提示", "确定要退出吗?",
                                                                   QMessageBox::Cancel | QMessageBox::No | QMessageBox::Yes,
                                                                   QMessageBox::Yes);
        if (resBtn != QMessageBox::Yes) {
            // 如果用户点击取消或者No,取消关闭事件
            event->ignore();
        } else {
            // 如果用户点击Yes,接受关闭事件
            event->accept();
        }
    }
};

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    MyWidget widget;
    widget.show();

    return app.exec();
}

在上面的代码中,首先创建了一个按钮,并连接到QWidget的close()槽上,这样当用户点击按钮时,会触发关闭操作。

然后,重写了QWidget的closeEvent()函数。在该函数中,创建了一个QMessageBox来显示提示窗口,询问用户是否确认退出。根据用户的选择,接受或取消关闭事件。如果用户选择取消或者No,关闭事件会被忽略,窗口不会关闭;如果用户选择Yes,关闭事件会被接受,窗口会关闭。

最后,在main()函数中创建了一个MyWidget对象,并显示出来。

这样,当用户点击窗口的关闭按钮时,就会弹出提示窗口,要求用户确认是否退出。

Qt点击关闭X按钮弹出提示窗口点击OK退出点击X取消

原文地址: https://www.cveoy.top/t/topic/ixds 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录