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 " 

"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
"
        "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, " 

"because the disk is full.  You can delete " 

"some files and press Retry, or you can " 

"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,
"
        "because the disk is full.  You can delete
"
        "some files and press Retry, or you can
"
        "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. " 

"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.
"
        "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