对于一些重要的操作需要让用户再次确认一次,给出几个基本的实例
是和否
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或者其它相似的