qt中实现关闭程序时提示是否关闭

    switch( QMessageBox::information( this, tr("CT Control View"),
    tr("Do you really want to log out CT Control View?"),
    tr("Yes"), tr("No"),
    0, 1 ) )
    {
    case 0:
    event->accept();
    break;
    case 1:
    default:
    event->ignore();
    break;
    }



上述代码实现了在点击Qt程序右上角的x时,由用户选择是否真的退出的功能,提示框中的文字可以自由更改。下面是这段函数的效果图。


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 您可以使用QMessageBox类来创建一个弹窗提示,当您尝试关闭Qt的exe程序,可以在关闭进程之前弹出提示。您可以使用以下代码: QMessageBox::StandardButton reply; reply = QMessageBox::question(this, "提示", "您确定要关闭程序吗?", QMessageBox::Yes|QMessageBox::No); if (reply == QMessageBox::Yes) { //关闭进程 } else { //取消关闭 } 这将创建一个带有“是”和“否”按钮的弹窗提示,询问用户是否关闭程序。如果用户选择“是”,则关闭进程,否则取消关闭。 ### 回答2: 在Qt,可以使用QMessageBox类来显示弹窗提示并阻止关闭进程。 首先,需要在Qt项目包含QMessageBox头文件: ```cpp #include <QMessageBox> ``` 然后,在关闭事件(closeEvent)处理进程关闭的逻辑。在主窗口的关闭事件,可以通过重写closeEvent函数来捕获关闭事件: ```cpp void MainWindow::closeEvent(QCloseEvent *event) { // 阻止直接关闭进程 event->ignore(); // 显示弹窗提示 QMessageBox msgBox; msgBox.setText(tr("关闭确认")); msgBox.setInformativeText(tr("确定要关闭程序吗?")); msgBox.setStandardButtons(QMessageBox::Yes | QMessageBox::No); msgBox.setDefaultButton(QMessageBox::No); // 检查用户的选择,如果点击了确认则关闭进程 if (msgBox.exec() == QMessageBox::Yes) { event->accept(); } } ``` 在以上代码,closeEvent函数重写了MainWindow类的关闭事件,在关闭事件发生,会阻止直接关闭进程并显示一个带有选择按钮的对话框。根据用户的选择,确定是否关闭进程。 这样,在关闭进程,会弹出提示框,询问用户是否确定关闭程序。只有当用户确认关闭,进程才会关闭。否则,进程将继续运行在后台。 ### 回答3: 在Qt的exe程序,在关闭进程弹窗提示阻止的方法如下: 1. 首先,在关闭事件捕捉关闭信号。在主窗口类,重新实现`closeEvent`方法,并在其捕捉关闭事件。 2. 创建一个`QMessageBox`对话框,提示用户是否真的要关闭程序。 3. 给`QMessageBox`对话框添加两个按钮,分别用于确认关闭和取消关闭。 4. 若用户选择取消关闭,则调用`event->ignore()`来忽略关闭事件,阻止程序关闭。 5. 若用户选择确认关闭,则调用`event->accept()`来接受关闭事件,允许程序关闭。 下面是一个示例代码: ```cpp #include <QMainWindow> #include <QCloseEvent> #include <QMessageBox> class MyMainWindow : public QMainWindow { Q_OBJECT public: MyMainWindow(QWidget *parent = nullptr) : QMainWindow(parent) { // ... } protected: void closeEvent(QCloseEvent *event) override { // 弹窗提示是否关闭程序 QMessageBox::StandardButton reply; reply = QMessageBox::question(this, "关闭程序", "确定要关闭程序吗?", QMessageBox::Yes|QMessageBox::No); if (reply == QMessageBox::Yes) { // 用户选择确认关闭 event->accept(); } else { // 用户选择取消关闭 event->ignore(); } } }; ``` 通过以上方法,在关闭Qt的exe程序,会弹出一个对话框询问用户是否真的要关闭程序。只有用户选择确认关闭,程序才会关闭,否则会被阻止关闭
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值