日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Qt系列文章之 QMessageBox

發(fā)布時間:2023/12/20 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Qt系列文章之 QMessageBox 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

上一篇文章介紹了如何使用QDataStream來實現(xiàn)對界面信息的二進(jìn)制序列化儲存和讀入操作;采用的是關(guān)閉窗口就默認(rèn)保存界面信息,其實有的時候我們不一定非要對當(dāng)前版本的信息進(jìn)行保存,此時可以給用戶彈出一個信息對話框讓用戶選擇是否保存配置信息到文件。

信息對話框 QMessageBox

信息對話框是非常常用的界面元素,Qt的實現(xiàn)方式是QMessageBox。QMessageBox的幫助文檔讀者可以參考Qt的幫助手冊:

QmessageBox的屬性和方法很多,可以按照普通的類來實例化對象,然后調(diào)用對象。不過一般信息對話框只是在需要的時候才會使用,使用完成后希望盡快從內(nèi)容消除掉,因此在對Qt的信息對話框使用時很少進(jìn)行實例化,而是直接調(diào)用QMessageBox提供的幾個常用的靜態(tài)方法直接使用,常用的QMessageBox的靜態(tài)方法有如下幾個,讀者可以自行查閱其幫助文檔的描述。

QMessageBox::StandardButton critical(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = Ok, QMessageBox::StandardButton defaultButton = NoButton) int critical(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButton button0, QMessageBox::StandardButton button1) QMessageBox::StandardButton information(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = Ok, QMessageBox::StandardButton defaultButton = NoButton) QMessageBox::StandardButton information(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButton button0, QMessageBox::StandardButton button1 = NoButton) QMessageBox::StandardButton question(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = StandardButtons(Yes | No), QMessageBox::StandardButton defaultButton = NoButton) int question(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButton button0, QMessageBox::StandardButton button1)QMessageBox::StandardButton warning(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = Ok, QMessageBox::StandardButton defaultButton = NoButton) int warning(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButton button0, QMessageBox::StandardButton button1)

緊接著上一篇文章的內(nèi)容,來對closeEvent(QCloseEvent *event)事件函數(shù)做一些處理,希望在關(guān)閉界面時提醒用戶是否保存配置。

首先在頭文件包含QMessageBox:

#include <QMessageBox>

在事件函數(shù)中構(gòu)造一個信息對話框。
首先需要定義一個QMessageBox::StandardButton來接受用戶選擇的控件類型:

QMessageBox::StandardButton reply; //新建一個StandardButton來儲存用戶的響應(yīng)

然后來構(gòu)造一個信息對話框:

reply = QMessageBox::information( //調(diào)用靜態(tài)屬性this, //父對象指針"Information", //對話框標(biāo)題"Do you want to save the configration information to file?", //對話框提示信息QMessageBox::Yes|QMessageBox::No); //構(gòu)建用戶可以選擇的按鈕控件

信息對話框的樣式如下:

構(gòu)造了兩個按鈕供用戶選擇Yes 和 No,當(dāng)用戶選擇No,說明不希望保存信息,直接關(guān)閉界面并退出:

f(reply==QMessageBox::StandardButton::No) //如果用戶選擇 No按鈕,不保存文件 直接退出{QMainWindow::closeEvent(event); //最后將事件處理權(quán)交回父類}

如果用戶選擇是Yes 再繼續(xù)執(zhí)行后續(xù)的配置信息保存代碼。

然后編譯運(yùn)行代碼,默認(rèn)的界面信息如下:

我們做一些修改:

關(guān)閉時我們選擇No:

再次打開界面內(nèi)容還是和第一次打開的界面內(nèi)容一致。

新的closeEvent(QCloseEvent *event)代碼如下:

void mainWindow::closeEvent(QCloseEvent *event) {/*編寫你的事件處理函數(shù)*/QMessageBox::StandardButton reply; //新建一個StandardButton來儲存用戶的響應(yīng)reply = QMessageBox::information( //調(diào)用靜態(tài)屬性this, //父對象指針"Information", //對話框標(biāo)題"Do you want to save the configration information to file?", //對話框提示信息QMessageBox::Yes|QMessageBox::No); //構(gòu)建用戶可以選擇的按鈕控件if(reply==QMessageBox::No) //如果用戶選擇 No按鈕,不保存文件 直接退出{return QMainWindow::closeEvent(event); //最后將事件處理權(quán)交回父類}//如果用戶選擇Yes 繼續(xù)執(zhí)行下面保存配置的代碼QFile file("config.ini");if(!file.open(QIODevice::WriteOnly | QIODevice::Text))return; //打開失敗關(guān)閉QDataStream out(&file);out.setVersion(QDataStream::Qt_4_0); //最好設(shè)置數(shù)據(jù)保存版本out<<ui->lineEdit_input->text() //寫入編輯框的值<<qint8(ui->downList->currentIndex()); //寫入下拉菜單編號qint8 rowCount = ui->tableWidget->rowCount(); //寫入表格行數(shù)out<<rowCount;for (int i=0;i<rowCount;i++) { //寫入表格每行內(nèi)容out<<ui->tableWidget->item(i,0)->text()<<ui->tableWidget->item(i,1)->text();}file.close(); //關(guān)閉文件return QMainWindow::closeEvent(event); //最后將事件處理權(quán)交回父類 }

本文介紹了QMessageBox的使用原理并結(jié)合代碼開發(fā)了一個應(yīng)用場景。后續(xù)將繼續(xù)介紹Qt 界面開發(fā)相關(guān)的模塊。


歡迎同好溝通交流,批評指正,歡迎關(guān)注我的公號:不如起而行之

總結(jié)

以上是生活随笔為你收集整理的Qt系列文章之 QMessageBox的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。