QT實現串列埠除錯助手(五):ini檔案存取串列埠資訊
上一篇:
一般串列埠除錯工具需要儲存基本資訊,這樣重新開啟後可以繼續載入之前的配置,這裡我們使用ini檔案來讀取儲存串列埠引數。
一、建立ini檔案
在某個目錄新增一個字尾為ini的檔案(最好是程式根目錄),比如名為param.ini
二、ini檔案格式
一般ini檔案格式是類似下圖的
1、【】方括號可以配置一個分類,分類下可以配置屬性
2、屬性的左值為屬性名,右值為屬性值
三、讀寫ini檔案
1、新增標頭檔案
#include <QSettings>
2、開啟ini檔案,設定檔案讀取格式
QSettings *configIni = new QSettings("/qss/param.ini", QSettings::IniFormat); configIni->setIniCodec("UTF-8"); if(configIni == NULL) return false;
3、讀取屬性值
比如讀取波特率
QString baudRate = configIni->value("uartParam/BaudRate").toString();
可以看到value函式的入口引數是一個字串,用斜槓將分類和屬性名隔開,如果要查詢uartParam下的BaudRate屬性的值,就像上面的程式碼這樣
4、寫入屬性值
configIni->setValue("uartParam/BaudRate",ui->rateBox->currentText());
和讀取類似,呼叫的是setValue。
5、需要注意的是,當這個分類或者屬性不存在的時候,讀取到的值是空。對檔案中不存在的分類屬性寫入時,則會直接建立相應的屬性和值。
四、實現串列埠屬性讀取與儲存
1、建立一個pushButton和它的click槽函式,用來儲存引數
2、介面初始化時讀取ini檔案,配置串列埠引數
//根據配置檔案初始化引數 void MainWindow::IniParamInit(void) { QSettings *configIni = new QSettings("/qss/param.ini", QSettings::IniFormat); configIni->setIniCodec("UTF-8"); if(configIni == NULL) return; //波特率 QString baudRate = configIni->value("uartParam/BaudRate").toString(); ui->rateBox->setCurrentText(baudRate); //資料位 QString dataBit = configIni->value("uartParam/DataBit").toString(); ui->dataBox->setCurrentText(dataBit); //奇偶校驗位 QString parity = configIni->value("uartParam/Parity").toString(); qDebug()<<"parity:"<<parity; ui->checkBox->setCurrentText(parity); //停止位 QString stopBit = configIni->value("uartParam/StopBit").toString(); ui->stopBox->setCurrentText(stopBit); delete configIni; }
3、儲存配置按鈕被點選時,儲存當前的串列埠配置
bool MainWindow::SaveUartParam(void)
{
QSettings *configIni = new QSettings("/qss/param.ini", QSettings::IniFormat);
configIni->setIniCodec("UTF-8");
if(configIni == NULL)
return false;
//波特率
configIni->setValue("uartParam/BaudRate",ui->rateBox->currentText());
//資料位
configIni->setValue("uartParam/DataBit",ui->dataBox->currentText());
//奇偶校驗位
configIni->setValue("uartParam/Parity",ui->checkBox->currentText());
//停止位
configIni->setValue("uartParam/StopBit",ui->stopBox->currentText());
delete configIni;
return true;
}
4、有幾個值得注意的點:
(1)、配置檔案這裡用了絕對路徑,實際使用最好還是用相對路徑,我只是為了除錯方便。
(2)、檔案格式很重要,特別是涉及到漢字的讀取,最好都用UTF-8。
(3)、當comobox被設定為原先並沒有包含的值時,不會生效,而是會自動被配置為原先的第一個值。
(4)、因為對檔案中不存在的分類屬性寫入時,QT會直接建立相應的屬性和值,所以我們不需要開始先寫一個ini檔案,直接用一個空的檔案,啟動程式後,點一下我們做好的儲存屬性按鈕,檔案就自動填入了。
五、快捷命令列表
快捷命令列表肯定是要能儲存的,不然很雞肋。用相同的方式稍微改一下,就可以實現命令列表的儲存了。