最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Qt中QMessageBox使用小結(jié)

 更新時(shí)間:2025年12月24日 09:34:09   作者:byxdaz  
本文主要介紹了Qt中QMessageBox使用小結(jié),包括基本消息框、帶按鈕的消息框、自定義消息框、按鈕類型、圖標(biāo)設(shè)置以及長(zhǎng)文本顯示,具有一定的參考價(jià)值,感興趣的可以了解一下

1.基本消息框

簡(jiǎn)單信息提示

#include <QMessageBox>
 
// 信息提示框
QMessageBox::information(nullptr, "標(biāo)題", "這是一條信息");
 
// 警告框
QMessageBox::warning(nullptr, "警告", "這是一個(gè)警告!");
 
// 錯(cuò)誤框  
QMessageBox::critical(nullptr, "錯(cuò)誤", "發(fā)生了一個(gè)錯(cuò)誤!");
 
// 詢問(wèn)框
QMessageBox::question(nullptr, "詢問(wèn)", "你確定要執(zhí)行此操作嗎?");

2.帶按鈕的消息框

基本按鈕配置

// 帶 Yes/No 按鈕
QMessageBox::StandardButton reply;
reply = QMessageBox::question(nullptr, "確認(rèn)", "確定要退出嗎?",
                             QMessageBox::Yes | QMessageBox::No);
 
if (reply == QMessageBox::Yes) {
    qDebug() << "用戶選擇了 Yes";
} else {
    qDebug() << "用戶選擇了 No";
}
 
// 帶多個(gè)按鈕
QMessageBox::StandardButton reply = QMessageBox::question(
    nullptr, 
    "保存文件", 
    "文件已修改,是否保存?",
    QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel
);
 
switch (reply) {
case QMessageBox::Save:
    qDebug() << "保存文件";
    break;
case QMessageBox::Discard:
    qDebug() << "不保存";
    break;
case QMessageBox::Cancel:
    qDebug() << "取消操作";
    break;
}

3.自定義消息框

基本示例

QMessageBox msgBox;
msgBox.setWindowTitle("自定義標(biāo)題");
msgBox.setText("這是一條詳細(xì)的消息內(nèi)容");
msgBox.setInformativeText("這是附加信息");
msgBox.setDetailedText("這是詳細(xì)的技術(shù)信息:\n錯(cuò)誤代碼: 0x1234\n文件: main.cpp");
msgBox.setIcon(QMessageBox::Information);
msgBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);
msgBox.setDefaultButton(QMessageBox::Ok);
 
int ret = msgBox.exec();
 
if (ret == QMessageBox::Ok) {
    qDebug() << "用戶點(diǎn)擊了確定";
}

設(shè)置父窗口

// 在類的方法中使用 this 作為父對(duì)象
void MainWindow::showMessage()
{
    QMessageBox::information(this, "提示", "操作成功完成");
    
    // 或者使用對(duì)象方式
    QMessageBox msgBox(this);
    msgBox.setWindowTitle("父對(duì)象示例");
    msgBox.setText("這個(gè)對(duì)話框會(huì)居中顯示在父窗口");
    msgBox.exec();
}

設(shè)置默認(rèn)按鈕

QMessageBox msgBox;
msgBox.setText("請(qǐng)選擇操作");
msgBox.setStandardButtons(QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel);
msgBox.setDefaultButton(QMessageBox::No);  // 默認(rèn)選中 No 按鈕
msgBox.exec();

自定義告警對(duì)話框(按鈕居中顯示)

void myselfBoxWarn(const QString & title, const QString & content)
{
    QMessageBox msgBox;
    msgBox.setWindowTitle(title);
    msgBox.setText(content);
    msgBox.setStandardButtons(QMessageBox::Ok);
 
    // 設(shè)置字體大小 - 使用樣式表
    msgBox.setStyleSheet("QLabel{ font-size: 32px; }"
                         "QPushButton{ font-size: 32px; width: 200px; height: 36px; }"
                         "QDialogButtonBox {qproperty-centerButtons: true;}");
 
    msgBox.exec();
}

自定義告警提示選擇對(duì)話框(按鈕居中顯示)

QMessageBox msgBox;
msgBox.setWindowTitle(tr("manage"));
msgBox.setText(tr("set success. must be restarted to take effect."));
msgBox.setStandardButtons(QMessageBox::Yes | QMessageBox::No);
msgBox.setDefaultButton(QMessageBox::Yes);
 
    // 設(shè)置樣式表
    msgBox.setStyleSheet(
        "QMessageBox {"
        "    font-size: 16px;"
        "    font-family: Source Han Sans SC;"
        "}"
        "QMessageBox QLabel {"
        "    font-size: 16px;"
        "    min-width: 400px;"
        "    min-height: 60px;"
        "}"
        "QMessageBox QPushButton {"
        "    font-size: 14px;"
        "    min-width: 100px;"
        "    min-height: 35px;"
        "    padding: 8px;"
        "}"
        "QDialogButtonBox {"
        "    qproperty-centerButtons: true;"  // 使用 Qt 屬性
        "}"
        );
 
    if(msgBox.exec() == QMessageBox::Yes){
 
        // 獲取當(dāng)前程序的路徑和參數(shù)
        QString program = QApplication::applicationFilePath();
        QStringList arguments = QApplication::arguments();
 
        // 啟動(dòng)新進(jìn)程(startDetached 會(huì)在當(dāng)前程序退出后運(yùn)行)
        QProcess::startDetached(program, arguments);
 
        // 關(guān)閉當(dāng)前程序
        QApplication::quit();
    }

設(shè)置圖標(biāo)和樣式

QMessageBox msgBox;
msgBox.setWindowTitle("樣式化消息框");
msgBox.setText("<h3>HTML 格式文本</h3>");
msgBox.setInformativeText("支持 <b>粗體</b>、<i>斜體</i> 等 HTML 標(biāo)簽");
 
// 設(shè)置圖標(biāo)
msgBox.setIconPixmap(QPixmap(":/images/icon.png").scaled(64, 64));
 
// 設(shè)置樣式
msgBox.setStyleSheet(
    "QMessageBox {"
    "    background-color: #f0f0f0;"
    "    font-size: 14px;"
    "}"
    "QMessageBox QPushButton {"
    "    min-width: 80px;"
    "    min-height: 30px;"
    "}"
);
 
msgBox.exec();

4. 按鈕(默認(rèn)和自定義)

常用按鈕類型

// 標(biāo)準(zhǔn)按鈕組合
QMessageBox::Ok                    // 確定
QMessageBox::Open                  // 打開(kāi)
QMessageBox::Save                  // 保存
QMessageBox::Cancel                // 取消
QMessageBox::Close                 // 關(guān)閉
QMessageBox::Discard               // 放棄
QMessageBox::Apply                 // 應(yīng)用
QMessageBox::Reset                 // 重置
QMessageBox::RestoreDefaults       // 恢復(fù)默認(rèn)
QMessageBox::Help                  // 幫助
QMessageBox::SaveAll               // 全部保存
QMessageBox::Yes                   // 是
QMessageBox::YesToAll              // 全是
QMessageBox::No                    // 否
QMessageBox::NoToAll               // 全否
QMessageBox::Abort                 // 中止
QMessageBox::Retry                 // 重試
QMessageBox::Ignore                // 忽略
QMessageBox msgBox;
msgBox.setWindowTitle("按鈕角色");
 
// 不同角色的按鈕
msgBox.addButton("確定", QMessageBox::AcceptRole);      // 接受操作
msgBox.addButton("應(yīng)用", QMessageBox::ApplyRole);       // 應(yīng)用更改
msgBox.addButton("重置", QMessageBox::ResetRole);       // 重置設(shè)置
msgBox.addButton("是", QMessageBox::YesRole);           // 肯定回答
msgBox.addButton("否", QMessageBox::NoRole);            // 否定回答
msgBox.addButton("拒絕", QMessageBox::RejectRole);      // 拒絕操作
msgBox.addButton("幫助", QMessageBox::HelpRole);        // 請(qǐng)求幫助
msgBox.addButton("自定義", QMessageBox::ActionRole);    // 自定義操作
 
msgBox.setText("不同角色的按鈕示例");
msgBox.exec();

帶圖標(biāo)的自定義按鈕

QMessageBox msgBox;
msgBox.setWindowTitle("帶圖標(biāo)的按鈕");
msgBox.setText("請(qǐng)選擇操作:");
 
// 創(chuàng)建帶圖標(biāo)的按鈕
QPushButton* okButton = new QPushButton(QIcon(":/icons/ok.png"), "確定");
QPushButton* cancelButton = new QPushButton(QIcon(":/icons/cancel.png"), "取消");
QPushButton* helpButton = new QPushButton(QIcon(":/icons/help.png"), "幫助");
 
// 添加到消息框
msgBox.addButton(okButton, QMessageBox::AcceptRole);
msgBox.addButton(cancelButton, QMessageBox::RejectRole);
msgBox.addButton(helpButton, QMessageBox::HelpRole);
 
msgBox.setDefaultButton(okButton);
 
msgBox.exec();
 
if (msgBox.clickedButton() == okButton) {
    qDebug() << "確定";
} else if (msgBox.clickedButton() == helpButton) {
    QMessageBox::information(&msgBox, "幫助", "這是幫助信息");
}

5. 圖標(biāo)(默認(rèn)和自定義)

默認(rèn)圖標(biāo)

QMessageBox::Information - 藍(lán)色信息圖標(biāo)
QMessageBox::Warning - 黃色警告圖標(biāo)
QMessageBox::Critical - 紅色錯(cuò)誤圖標(biāo)
QMessageBox::Question - 藍(lán)色問(wèn)號(hào)圖標(biāo)
QMessageBox::NoIcon - 無(wú)圖標(biāo)
#include <QMessageBox>
 
// 1. 無(wú)圖標(biāo)
QMessageBox msgBox;
msgBox.setIcon(QMessageBox::NoIcon);
msgBox.setText("沒(méi)有圖標(biāo)的消息框");
msgBox.exec();
 
// 2. 信息圖標(biāo)
QMessageBox::information(nullptr, "信息", "這是一個(gè)信息提示");
 
// 3. 警告圖標(biāo)  
QMessageBox::warning(nullptr, "警告", "這是一個(gè)警告消息");
 
// 4. 錯(cuò)誤圖標(biāo)
QMessageBox::critical(nullptr, "錯(cuò)誤", "這是一個(gè)錯(cuò)誤消息");
 
// 5. 詢問(wèn)圖標(biāo)
QMessageBox::question(nullptr, "詢問(wèn)", "這是一個(gè)詢問(wèn)消息");

使用 setIcon() 方法設(shè)置圖標(biāo)

QMessageBox msgBox;
msgBox.setWindowTitle("設(shè)置圖標(biāo)類型");
 
// 設(shè)置不同的圖標(biāo)類型
msgBox.setIcon(QMessageBox::Information);    // 信息圖標(biāo)
// msgBox.setIcon(QMessageBox::Warning);     // 警告圖標(biāo)
// msgBox.setIcon(QMessageBox::Critical);    // 錯(cuò)誤圖標(biāo)
// msgBox.setIcon(QMessageBox::Question);    // 詢問(wèn)圖標(biāo)
 
msgBox.setText("使用 setIcon() 方法設(shè)置圖標(biāo)");
msgBox.exec();

自定義圖標(biāo)

1)使用 setIconPixmap()

QMessageBox msgBox;
msgBox.setWindowTitle("自定義圖標(biāo)");
msgBox.setText("使用自定義圖標(biāo)的消息框");
 
// 使用自定義圖標(biāo)替換默認(rèn)圖標(biāo)
QPixmap customPixmap(":/images/my_icon.png");  // 從資源文件
// 或者: QPixmap customPixmap("C:/icons/custom.png");  // 從文件系統(tǒng)
 
// 縮放圖標(biāo)到合適大小
customPixmap = customPixmap.scaled(64, 64, Qt::KeepAspectRatio, Qt::SmoothTransformation);
 
msgBox.setIconPixmap(customPixmap);
msgBox.exec();

2)完全自定義圖標(biāo)的方法

QMessageBox msgBox;
msgBox.setWindowTitle("完全自定義");
 
// 重要:必須先設(shè)置為 NoIcon,否則自定義圖標(biāo)可能不顯示
msgBox.setIcon(QMessageBox::NoIcon);
 
// 然后設(shè)置自定義圖標(biāo)
QPixmap customIcon(":/images/success.png");
customIcon = customIcon.scaled(48, 48, Qt::KeepAspectRatio, Qt::SmoothTransformation);
msgBox.setIconPixmap(customIcon);
 
msgBox.setText("操作成功完成!");
msgBox.exec();

6. 長(zhǎng)文本顯示

自動(dòng)換行(默認(rèn)行為)

QMessageBox 會(huì)自動(dòng)根據(jù)對(duì)話框?qū)挾葥Q行:

QMessageBox::information(this, "自動(dòng)換行", 
    "這是一段很長(zhǎng)的文本,QMessageBox 會(huì)自動(dòng)根據(jù)對(duì)話框的寬度進(jìn)行換行處理,"
    "確保所有內(nèi)容都能正確顯示給用戶,不需要手動(dòng)添加換行符。");

手動(dòng)添加換行符

QMessageBox::information(this, "手動(dòng)換行",
    "第一行文本\n"
    "第二行文本\n"
    "第三行文本\n"
    "這是最后一行");

使用 HTML 標(biāo)簽控制格式

QMessageBox msgBox;
msgBox.setWindowTitle("HTML 格式");
msgBox.setText("<html>"
               "<p>這是第一段文本,可以自動(dòng)換行</p>"
               "<p>這是第二段文本</p>"
               "<p style='color: red;'>這是紅色文本</p>"
               "<ul>"
               "<li>列表項(xiàng) 1</li>"
               "<li>列表項(xiàng) 2</li>"
               "<li>列表項(xiàng) 3</li>"
               "</ul>"
               "</html>");
msgBox.exec();

設(shè)置固定寬度的消息框

QMessageBox msgBox;
msgBox.setWindowTitle("固定寬度");
msgBox.setText("這是一段很長(zhǎng)的文本,我們將通過(guò)設(shè)置樣式表來(lái)控制對(duì)話框的寬度,從而實(shí)現(xiàn)更好的換行效果。");
msgBox.setStyleSheet("QMessageBox { min-width: 500px; }");
msgBox.exec();

使用 setText 和 setInformativeText 組合

QMessageBox msgBox;
msgBox.setWindowTitle("組合文本");
msgBox.setText("主要信息:操作成功完成");
msgBox.setInformativeText("詳細(xì)信息:文件已保存到指定位置,所有更改都已應(yīng)用。"
                         "您可以繼續(xù)其他操作或查看保存的文件。");
msgBox.exec();

超長(zhǎng)文本使用 setDetailedText

QMessageBox msgBox;
msgBox.setWindowTitle("詳細(xì)文本");
msgBox.setText("操作完成");
msgBox.setInformativeText("基本操作已執(zhí)行成功");
msgBox.setDetailedText("這是詳細(xì)的執(zhí)行日志:\n"
                      "1. 步驟一:初始化系統(tǒng)... 完成\n"
                      "2. 步驟二:加載配置文件... 完成\n"
                      "3. 步驟三:處理數(shù)據(jù)... 完成\n"
                      "4. 步驟四:保存結(jié)果... 完成\n"
                      "5. 步驟五:清理資源... 完成\n"
                      "所有操作執(zhí)行成功,耗時(shí) 2.3 秒");
msgBox.exec();

到此這篇關(guān)于Qt中QMessageBox使用小結(jié)的文章就介紹到這了,更多相關(guān)Qt QMessageBox使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語(yǔ)言中三種庫(kù)的編譯和使用方法

    C語(yǔ)言中三種庫(kù)的編譯和使用方法

    本文介紹了C語(yǔ)言自定義簡(jiǎn)易math庫(kù)的三種編譯方式:直接編譯、靜態(tài)庫(kù)(.a)和動(dòng)態(tài)庫(kù)(.so),每種方式都有詳細(xì)步驟和代碼示例,適合不同場(chǎng)景下的項(xiàng)目需求,需要的朋友可以參考下
    2026-04-04
  • 淺談c語(yǔ)言中類型隱性轉(zhuǎn)換的坑

    淺談c語(yǔ)言中類型隱性轉(zhuǎn)換的坑

    下面小編就為大家?guī)?lái)一篇淺談c語(yǔ)言中類型隱性轉(zhuǎn)換的坑。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-08-08
  • C/C++?QT實(shí)現(xiàn)自定義對(duì)話框的示例代碼

    C/C++?QT實(shí)現(xiàn)自定義對(duì)話框的示例代碼

    對(duì)話框分為多種,常見(jiàn)的有通用對(duì)話框,自定義對(duì)話框,模態(tài)對(duì)話框,非模態(tài)對(duì)話框等,本文主要介紹了QT自定義對(duì)話框,感興趣的可以了解一下
    2021-11-11
  • C語(yǔ)言 數(shù)據(jù)結(jié)構(gòu)平衡二叉樹(shù)實(shí)例詳解

    C語(yǔ)言 數(shù)據(jù)結(jié)構(gòu)平衡二叉樹(shù)實(shí)例詳解

    這篇文章主要介紹了C語(yǔ)言 數(shù)據(jù)結(jié)構(gòu)平衡二叉樹(shù)實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • 字符串的模式匹配詳解--BF算法與KMP算法

    字符串的模式匹配詳解--BF算法與KMP算法

    這篇文章記錄一下串里面的模式匹配,模式匹配,顧名思義就是給定一個(gè)被匹配的字符串,然后用一個(gè)字符串模式(模型)去匹配上面說(shuō)的字符串,看后者是否在前者里面出現(xiàn)。常用的有2種算法可以實(shí)現(xiàn),下面我們來(lái)具體探討下
    2014-08-08
  • C++實(shí)現(xiàn)簡(jiǎn)單掃雷小游戲

    C++實(shí)現(xiàn)簡(jiǎn)單掃雷小游戲

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)簡(jiǎn)單掃雷小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-09-09
  • C++中的memset用法詳解

    C++中的memset用法詳解

    memset是一個(gè)初始化函數(shù),作用是將某一塊內(nèi)存中的全部設(shè)置為指定的值,本文給大家介紹C++中的memset用法,感興趣的朋友跟隨小編一起看看吧
    2023-02-02
  • 使用C語(yǔ)言操作樹(shù)莓派GPIO的詳細(xì)步驟

    使用C語(yǔ)言操作樹(shù)莓派GPIO的詳細(xì)步驟

    今天抽空給大家普及使用C語(yǔ)言操作樹(shù)莓派GPIO的詳細(xì)步驟,本文大概分五步給大家介紹樹(shù)莓派GPIO安裝步驟,首先需要安裝GPIO庫(kù)然后進(jìn)行一步步設(shè)置,具體操作方法跟隨小編一起學(xué)習(xí)吧
    2021-06-06
  • C++中的運(yùn)算符重載詳解

    C++中的運(yùn)算符重載詳解

    大家好,本篇文章主要講的是C++中的運(yùn)算符重載詳解,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-01-01
  • C++異步調(diào)用方法詳解

    C++異步調(diào)用方法詳解

    這篇文章主要介紹了C++異步調(diào)用方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-05-05

最新評(píng)論

温州市| 富蕴县| 沂水县| 玉环县| 哈巴河县| 洛隆县| 繁昌县| 罗江县| 邢台县| 弋阳县| 承德市| 冷水江市| 阜宁县| 泰州市| 咸阳市| 筠连县| 武陟县| 漠河县| 南康市| 富宁县| 秦皇岛市| 泾阳县| 东台市| 濮阳市| 家居| 垦利县| 喀什市| 大庆市| 许昌市| 龙里县| 彭水| 北辰区| 宿州市| 富锦市| 太康县| 新乡县| 疏勒县| 彝良县| 历史| 甘谷县| 渑池县|