不熟悉Qt控件的看这篇文章传送门
ini配置文件
什么是.ini文件
ini文件简单的说就是配置文件,用来存储程序需要使用的配置信息,如mysql里面的ini文件
- 语法规则
INI文件由节、键、值组成。
节
[section]
参数(键=值) name=value
注解
注解使用分号表示(;)。在分号后面的文字,直到该行结尾都全部为注解。
QSettings 类 — >操作ini
- QSettings *config = new QSettings(iniPathString, QSettings::IniFormat);
- setIniCodec
- setValue
- value
- beginGroup
- endGroup
读取ini文件到tabWidget控件
void Widget::on_pushButtonRead_clicked()
{
// 导入ini文件
QString iniPath;
QFileInfo iniFileInfo;
int currenRow;
int currentColum;
QString itemName;
// ini文件路径
iniPath = QDir::currentPath() + "/teacher.ini";
iniFileInfo = QFileInfo(iniPath); // 查看file信息
if(iniFileInfo.exists())
{
// 设置文件格式
QSettings *config = new QSettings(iniPath,QSettings::IniFormat);
// 设置编码方式 config->format();
for(int i =0; i < 10; i++)
{
QString setcion = QString("teacher%1/").arg(i);
if(config->value(setcion + "name").toString().isEmpty()){
continue; // 如果使用for break
}
currenRow = i;
// 添加行
ui->tableWidget->insertRow(i);
itemName = config->value(setcion + "name").toString(); // 通过key找value
currentColum = 0;
ui->tableWidget->setItem(currenRow,currentColum,new QTableWidgetItem(itemName));
currentColum =1;
itemName = config->value(setcion + "course").toString();
ui->tableWidget->setItem(currenRow,currentColum,new QTableWidgetItem(itemName));
currentColum =2;
itemName = config->value(setcion + "time").toString();
ui->tableWidget->setItem(currenRow,currentColum,new QTableWidgetItem(itemName));
currentColum =3;
itemName = config->value(setcion + "read").toString();
ui->tableWidget->setItem(currenRow,currentColum,new QTableWidgetItem(itemName));
}
delete config;
}
else
{
QMessageBox::warning(this,"iniFile Not existe",
iniPath + " not exists");
}
}
将tabWidget中数据按照ini格式写到指定文件内
void Widget::on_pushButtonWrite_clicked()
{
QDir iniDir;
QString iniPathString;
QFileInfo iniFileInfo;
iniDir = QDir::current();
iniPathString = iniDir.absolutePath() + "/config" + "/teacher.ini";
qDebug() << "iniPathString:" << iniPathString;
iniFileInfo = QFileInfo(iniPathString);
//如果没有文件 创建文件
if(iniFileInfo.exists()) //如果ini文件存在
{
QSettings *config = new QSettings(iniPathString, QSettings::IniFormat);
for(int i = 0; i < ui->tableWidget->rowCount(); i++)
{
QString section = QString("teacher%1/").arg(i);
config->beginGroup(section);
// key value
config->setValue("name", ui->tableWidget->item(i, 0)->text());
config->setValue("course", ui->tableWidget->item(i, 1)->text());
config->setValue("time", ui->tableWidget->item(i, 2)->text());
config->setValue("read", ui->tableWidget->item(i, 3)->text());
config->endGroup();
}
delete config;
}
else
{ // 文件不存在会创建文件
QFile file(iniFileInfo.filePath());
if(!file.open(QIODevice::WriteOnly | QIODevice::Text))
{
qDebug()<<file.errorString();
}
QSettings *config = new QSettings(iniPathString, QSettings::IniFormat);
for(int i = 0; i < ui->tableWidget->rowCount(); i++)
{
QString section = QString("teacher%1/").arg(i);
config->beginGroup(section);
// key value
config->setValue("name", ui->tableWidget->item(i, 0)->text());
config->setValue("course", ui->tableWidget->item(i, 1)->text());
config->setValue("time", ui->tableWidget->item(i, 2)->text());
config->setValue("read", ui->tableWidget->item(i, 3)->text());
config->endGroup();
}
delete config;
file.close();
}
}