QT添加二次确认功能,QMessageBox的使用

对于一些重要的操作需要让用户再次确认一次,给出几个基本的实例

是和否

switch( QMessageBox::warning(NULL, "warning",QString::fromLocal8Bit("确定导入文件的频道吗?"), 

                            QMessageBox::Yes | QMessageBox::Default, 

                            QMessageBox::No | QMessageBox::Escape )) 

case QMessageBox::Yes: 

    break; 

case QMessageBox::No: 

return; 

    switch( QMessageBox::warning(NULL, "warning",QString::fromLocal8Bit("确定导入文件的频道吗?"),
                                 QMessageBox::Yes | QMessageBox::Default,
                                 QMessageBox::No | QMessageBox::Escape ))
    {
    case QMessageBox::Yes:
        break;
    case QMessageBox::No:
        return;
    }

文件未保存

switch( QMessageBox::information( this, "Application name here", 

"The document contains unsaved changes\n" 

"Do you want to save the changes before exiting?", 

"&Save", "&Discard", "Cancel", 

        0,      // Enter == button 0 

        2 ) ) { // Escape == button 2 

case 0: // Save被点击或者Alt+S被按下或者Enter被按下。 

// 保存 

break; 

case 1: // Discard被点击或者Alt+D被按下。 

// 不保存但退出 

break; 

case 2: // Cancel被点击或者Alt+C被按下或者Escape被按下。 

// 不退出 

break; 

switch( QMessageBox::information( this, "Application name here",
        "The document contains unsaved changes\n"
        "Do you want to save the changes before exiting?",
        "&Save", "&Discard", "Cancel",
        0,      // Enter == button 0
        2 ) ) { // Escape == button 2
    case 0: // Save被点击或者Alt+S被按下或者Enter被按下。
        // 保存
        break;
    case 1: // Discard被点击或者Alt+D被按下。
        // 不保存但退出
        break;
    case 2: // Cancel被点击或者Alt+C被按下或者Escape被按下。
        // 不退出
        break;
}

重试与放弃

switch( QMessageBox::warning( this, "Application name here", 

"Could not save the user preferences,\n" 

"because the disk is full.  You can delete\n" 

"some files and press Retry, or you can\n" 

"abort the Save Preferences operation.", 

        QMessageBox::Retry | QMessageBox::Default, 

        QMessageBox::Abort | QMessageBox::Escape )) { 

case QMessageBox::Retry: // Retry被点击或者Enter被按下。 

// 再次尝试 

break; 

case QMessageBox::Abort: // Abort被点击或者Escape被按下。 

// 放弃 

break; 

switch( QMessageBox::warning( this, "Application name here",
        "Could not save the user preferences,\n"
        "because the disk is full.  You can delete\n"
        "some files and press Retry, or you can\n"
        "abort the Save Preferences operation.",
        QMessageBox::Retry | QMessageBox::Default,
        QMessageBox::Abort | QMessageBox::Escape )) {
    case QMessageBox::Retry: // Retry被点击或者Enter被按下。
        // 再次尝试
        break;
    case QMessageBox::Abort: // Abort被点击或者Escape被按下。
        // 放弃
        break;
}

自定义的提示方式

如果没有任何标准消息框是合适地,你可以自己手工创建一个QMessageBox并且自己定义按钮文本:  

QMessageBox mb( "Application name here", 

"Saving the file will overwrite the original file on the disk.\n" 

"Do you really want to save?", 

        QMessageBox::Information, 

        QMessageBox::Yes | QMessageBox::Default, 

        QMessageBox::No, 

        QMessageBox::Cancel | QMessageBox::Escape ); 

mb.setButtonText( QMessageBox::Yes, "Save" ); 

mb.setButtonText( QMessageBox::No, "Discard" ); 

switch( mb.exec() ) { 

case QMessageBox::Yes: 

// 保存并且退出 

break; 

case QMessageBox::No: 

// 不保存退出 

break; 

case QMessageBox::Cancel: 

// 不保存并且不退出 

break; 

如果没有任何标准消息框是合适地,你可以自己手工创建一个QMessageBox并且自己定义按钮文本: 
QMessageBox mb( "Application name here",
        "Saving the file will overwrite the original file on the disk.\n"
        "Do you really want to save?",
        QMessageBox::Information,
        QMessageBox::Yes | QMessageBox::Default,
        QMessageBox::No,
        QMessageBox::Cancel | QMessageBox::Escape );
mb.setButtonText( QMessageBox::Yes, "Save" );
mb.setButtonText( QMessageBox::No, "Discard" );
switch( mb.exec() ) {
    case QMessageBox::Yes:
        // 保存并且退出
        break;
    case QMessageBox::No:
        // 不保存退出
        break;
    case QMessageBox::Cancel:
        // 不保存并且不退出
        break;
}

其他相关

按钮类型有:

  • Ok - 单按钮消息框地默认值
  • Cancel - 注意这个不是自动和Escape关联的
  • Yes
  • No
  • Abort
  • Retry
  • Ignore

按钮类型可以由上述类型和下面两个修饰成分使用或“|”来进行组合。

  • Default - 让按Enter键等于点击这个按钮。通常用于OK、Yes或者其它相似的。
  • Escape - 让按Escape键等于点击这个按钮。通常用于Abort、Cancel或者其它相似的

转载于:https://www.cnblogs.com/yelanggu/p/4015327.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值