Qt學習筆記(十一):消息對話框


QMessageBox 用於顯示消息提示。我們一般會使用其提供的幾個 static 函數:

1、顯示關於對話框:

    // 關於對話框:該對話框只有一個 OK 按鈕
    // 參數1:父對象;
    // 參數2:對話框標題;
    // 參數3:對話框內容;
    QMessageBox::about(this, "關於對話框", "服務暫停,請稍後再試!");

結果:

2、顯示關於 Qt 對話框。該對話框用於顯示有關 Qt 的信息:

    // 顯示關於 Qt 對話框。該對話框用於顯示有關 Qt 的信息。
    // 參數1:父對象;
    // 參數2:對話框標題;
    QMessageBox::aboutQt(this, "關於對話框");

結果:

3、顯示嚴重錯誤對話框:

    // 顯示嚴重錯誤對話框。這個對話框將顯示一個紅色的錯誤符號。我們可以通過 參數4 指明其
    // 顯示的按鈕,默認情況下只有一個 Ok 按鈕,我們可以使用 StandardButtons 類型指定多種按鈕。
    // 該方法有一個返回值,用於確定用戶點擊的是哪一個按鈕。
    // 參數1:父對象;
    // 參數2:對話框標題;
    // 參數3:對話框內容;
    // 參數4:關聯的按鍵類型,可以使用或(|)運算符,指定對話框應該出現的按鈕;
    // 參數5:指定默認選擇的按鈕(只能選擇在 參數4 中列出的按鈕類型);可以省略,默認選擇第一個按鈕。
    int result = QMessageBox::critical(this, "錯誤對話框", "保存信息出錯,是否繼續執行?", 
                          QMessageBox::Ok | QMessageBox::Cancel, QMessageBox::Ok);
    if (result == QMessageBox::Ok)
    {
        qDebug() << "點擊了 OK 按鈕";        
    }
    else
    {
        qDebug() << "點擊了 Cancel 按鈕";    
    }

 結果:

4、顯示普通信息對話框:這個對話框將顯示一個藍色的信息符號。用法和 critical 一樣:

    int result = QMessageBox::information(this, "信息對話框", "保存信息出錯,是否繼續執行?", 
                          QMessageBox::Ok | QMessageBox::Cancel);
    if (result == QMessageBox::Ok)
    {
        qDebug() << "點擊了 OK 按鈕";        
    }
    else
    {
        qDebug() << "點擊了 Cancel 按鈕";    
    }

結果:

5、顯示詢問對話框:和 critical 用法一樣,不同之處是該對話框顯示一個問號圖標,並且默認顯示的按鈕是 Yes 和 No:

    int result = QMessageBox::question(this, "詢問對話框", "是否保存文件?");
    if (result == QMessageBox::Yes)
    {
        qDebug() << "點擊了 Yes 按鈕";        
    }
    else if (result == QMessageBox::No)
    {
        qDebug() << "點擊了 No 按鈕";    
    }

 結果:

6、顯示警告對話框:用法和 critical 一樣,不同之處是該對話框顯示一個感嘆號圖標:

    int result = QMessageBox::warning(this, "警告對話框", "保存信息出錯,是否繼續執行?", 
                                      QMessageBox::Ok | QMessageBox::Cancel);
    if (result == QMessageBox::Ok)
    {
        qDebug() << "點擊了 Ok 按鈕";        
    }
    else if (result == QMessageBox::Cancel)
    {
        qDebug() << "點擊了 Cancel 按鈕";    
    }

結果:

7、自定義消息框:

    // 自定義消息框
    QMessageBox msgBox;
    msgBox.setWindowTitle("自定義消息框");             // 設置消息框標題
    msgBox.setText("文檔已被修改!");                  // 設置消息框顯示的內容
    msgBox.setInformativeText("是否保存修改的內容?");  // 設置簡單的說明文字
    msgBox.setDetailedText("詳細內容...");             // 設置詳細內容
    msgBox.setStandardButtons(QMessageBox::Save       
                              | QMessageBox::Discard 
                              | QMessageBox::Cancel); // 設置消息框顯示的按鈕類型 
    msgBox.setDefaultButton(QMessageBox::Save);       // 設置默認選擇的按鈕
    
    // 執行消息框(模態對話框,阻塞)
    int ret = msgBox.exec();
    switch (ret) 
    {
        case QMessageBox::Save:
        {
            QString str = msgBox.detailedText();    // 獲取詳細內容
            qDebug() << "保存文本!" << str.toUtf8().data();
            break;
        }
        case QMessageBox::Discard:
        {
            qDebug() << "放棄更改,繼續執行!";
            break;
        }
        case QMessageBox::Cancel:
        {
            qDebug() << "取消更改,結束程序!";
            break;
        }
    }

 結果:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章