標籤:io 使用 ar for strong 檔案 sp div on
對於一些重要的操作需要讓使用者再次確認一次,給出幾個基本的執行個體
是和否
[cpp] view plaincopyprint?
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; }
檔案未儲存
[cpp] view plaincopyprint?
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;}
重試與放棄
[cpp] view plaincopyprint?
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;}
自訂的提示方式
[cpp] view plaincopyprint?
如果沒有任何標準訊息框是合適地,你可以自己手工建立一個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或者其它相似的
QT添加二次確認功能,QMessageBox的使用