- 【1】 创建QT下的.qrc
- 【2】QSetting+.qrc使用
- 【3】代码实现
- main.cpp
- mainwindow.h
- mainwindow.cpp
- mainwidow.ui
- 【4】项目效果展示
【1】 创建QT下的.qrc
点击你的项目文件名,右键点击Add New …
选择这个
一般情况下,设置为/为根目录的形式
直接在项目文件下新建目录是不行的,要在.qrc下才可以
【第一步添加前缀】
【2】QSetting+.qrc使用【第二步添加文件】
先在当前目录下创建几个文件夹,并在文件夹中添加相关文件,然后添加进当前.qrc的/目录下
显然可以创建多个这样的文件和目录
首先在.ini里面添加配置文件的信息
【3】代码实现配置文件里面的信息可以通过代码写入,也可以事先写入,具体看项目
废话不多说,代码里面见分晓
main.cpp#include "mainwindow.h" #includemainwindow.hint main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; return a.exec(); }
#ifndef MAINWINDOW_H #define MAINWINDOW_H #includemainwindow.cpp#include //解决字符编码乱码问题 #include //用于设置配置文件和注册表等 QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACE class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = nullptr); ~MainWindow(); public slots: private: Ui::MainWindow *ui; QTextCodec *codec; QString Name; unsigned char Age; }; #endif // MAINWINDOW_H
//=============================QSetting 和 .ini配置文件配合使用范例 #include "mainwindow.h" #include "ui_mainwindow.h" #includemainwidow.ui 【4】项目效果展示#include //控制台输出 #include //数组 #include struct Student { Student() {}//构造函数 Student(QString name, int age) : name(name), age(age) {}//构造重载函数 且参数列表初始化 QString name; int age; void print() { qDebug() << "name: " << name << ", age: " << age; } }; MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); this->show(); codec = QTextCodec::codecForName("gbk");//设置字符编码 codec->setCodecForLocale(codec); setWindowTitle(codec->toUnicode("UI学习笔记")); //实现.ini配置文件 QSettings settings(":/filename/config.ini",QSettings::IniFormat); QString name = QString("student")+"/"+"name";//student是.ini里面的模块名+换行符+name QString age = QString("student")+"/"+"age";//student是.ini里面的模块名+换行符+age //通过设置值的方式 // settings.setValue(name,"SJY"); // settings.setValue(age,"26"); //直接获取ini里面的值的方式 ui->textEdit->setFont(QFont("楷体",14));//设置字体,字号 ui->textEdit->append(codec->toUnicode(settings.value("student/1").toString().toUtf8())); ui->textEdit->append(codec->toUnicode(settings.value("student/2").toString().toUtf8())); ui->textEdit->append(codec->toUnicode(settings.value("student/35").toString().toUtf8())); ui->textEdit->append(codec->toUnicode(settings.value(name).toString().toUtf8())); ui->textEdit->append(codec->toUnicode(settings.value(age).toString().toUtf8())); //数组方式设置配置文件ini内容和获取内容 QList stu_list;//结构体链表 //将数据压栈 stu_list.push_back(Student("Billy", 1)); stu_list.push_back(Student("Kitty", 2)); stu_list.push_back(Student("Alice", 3)); stu_list.push_back(Student("Ben", 4)); stu_list.push_back(Student("Miss", 5)); settings.beginWriteArray("studentList");//开始写,模块名studentList for ( int i = 0; i < stu_list.size(); ++i ) { settings.setArrayIndex(i);//设置数组索引 settings.setValue("name", stu_list.at(i).name);//根据索引找到结构体里面的匹配数据 settings.setValue("age", stu_list.at(i).age); } settings.endArray();//结束 ui->textEdit->append("----------------------------------------------------------------------"); //开始获取数据 QList ret_list; int size = settings.beginReadArray("studentList");//开始读取数据 ui->textEdit->append(QString("size=")+QString::number(size)); //读取ini里面的数组 for (int i = 0; i < size+1; ++i) {//本来设置值时大小只有5,但是我在ini文件里面增加了一个,所以改为size=6 settings.setArrayIndex(i);//=======================设置索引【第一步】 Student stu;//创建结构体变量 stu.name = settings.value("name").toString(); stu.age = settings.value("age").toInt(); //【第二部:获取值并显示】 ui->textEdit->append(codec->toUnicode(settings.value("name").toString().toUtf8())); ui->textEdit->append(codec->toUnicode(settings.value("age").toString().toUtf8())); ret_list.append(stu);//追加结构体 } settings.endArray(); for ( auto &temp : ret_list )//遍历结构体数组 { temp.print();//打印 } ui->textEdit->append("----------------------------------------------------------------------"); //对ini的其他操作 settings.setIniCodec("UTF-8");//设置字符编码 QStringList list= settings.allKeys();//获取所有键 for(int i=0;i ui->textEdit->append(list.at(i)); } } MainWindow::~MainWindow() { delete ui; }
程序员不可以放弃学习



