Qt系列文章之 QMessageBox
上一篇文章介紹了如何使用QDataStream來實現對界面信息的二進制序列化儲存和讀入操作;采用的是關閉窗口就默認保存界面信息,其實有的時候我們不一定非要對當前版本的信息進行保存,此時可以給用戶彈出一個信息對話框讓用戶選擇是否保存配置信息到文件。
信息對話框 QMessageBox
信息對話框是非常常用的界面元素,Qt的實現方式是QMessageBox。QMessageBox的幫助文檔讀者可以參考Qt的幫助手冊:
QmessageBox的屬性和方法很多,可以按照普通的類來實例化對象,然后調用對象。不過一般信息對話框只是在需要的時候才會使用,使用完成后希望盡快從內容消除掉,因此在對Qt的信息對話框使用時很少進行實例化,而是直接調用QMessageBox提供的幾個常用的靜態方法直接使用,常用的QMessageBox的靜態方法有如下幾個,讀者可以自行查閱其幫助文檔的描述。
緊接著上一篇文章的內容,來對closeEvent(QCloseEvent *event)事件函數做一些處理,希望在關閉界面時提醒用戶是否保存配置。
首先在頭文件包含QMessageBox:
#include <QMessageBox>在事件函數中構造一個信息對話框。
首先需要定義一個QMessageBox::StandardButton來接受用戶選擇的控件類型:
然后來構造一個信息對話框:
reply = QMessageBox::information( //調用靜態屬性this, //父對象指針"Information", //對話框標題"Do you want to save the configration information to file?", //對話框提示信息QMessageBox::Yes|QMessageBox::No); //構建用戶可以選擇的按鈕控件信息對話框的樣式如下:
構造了兩個按鈕供用戶選擇Yes 和 No,當用戶選擇No,說明不希望保存信息,直接關閉界面并退出:
f(reply==QMessageBox::StandardButton::No) //如果用戶選擇 No按鈕,不保存文件 直接退出{QMainWindow::closeEvent(event); //最后將事件處理權交回父類}如果用戶選擇是Yes 再繼續執行后續的配置信息保存代碼。
然后編譯運行代碼,默認的界面信息如下:
我們做一些修改:
關閉時我們選擇No:
再次打開界面內容還是和第一次打開的界面內容一致。
新的closeEvent(QCloseEvent *event)代碼如下:
void mainWindow::closeEvent(QCloseEvent *event) {/*編寫你的事件處理函數*/QMessageBox::StandardButton reply; //新建一個StandardButton來儲存用戶的響應reply = QMessageBox::information( //調用靜態屬性this, //父對象指針"Information", //對話框標題"Do you want to save the configration information to file?", //對話框提示信息QMessageBox::Yes|QMessageBox::No); //構建用戶可以選擇的按鈕控件if(reply==QMessageBox::No) //如果用戶選擇 No按鈕,不保存文件 直接退出{return QMainWindow::closeEvent(event); //最后將事件處理權交回父類}//如果用戶選擇Yes 繼續執行下面保存配置的代碼QFile file("config.ini");if(!file.open(QIODevice::WriteOnly | QIODevice::Text))return; //打開失敗關閉QDataStream out(&file);out.setVersion(QDataStream::Qt_4_0); //最好設置數據保存版本out<<ui->lineEdit_input->text() //寫入編輯框的值<<qint8(ui->downList->currentIndex()); //寫入下拉菜單編號qint8 rowCount = ui->tableWidget->rowCount(); //寫入表格行數out<<rowCount;for (int i=0;i<rowCount;i++) { //寫入表格每行內容out<<ui->tableWidget->item(i,0)->text()<<ui->tableWidget->item(i,1)->text();}file.close(); //關閉文件return QMainWindow::closeEvent(event); //最后將事件處理權交回父類 }本文介紹了QMessageBox的使用原理并結合代碼開發了一個應用場景。后續將繼續介紹Qt 界面開發相關的模塊。
歡迎同好溝通交流,批評指正,歡迎關注我的公號:不如起而行之
總結
以上是生活随笔為你收集整理的Qt系列文章之 QMessageBox的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: struts s标签中的s:select
- 下一篇: 芯片设计流程及各步骤使用工具简介