QT添加二次確認功能,QMessageBox的使用

來源:互聯網
上載者:User

標籤: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的使用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.