QT读写ini文件
- 源代码
- 文件结构
- mysql.h
- mysql.cpp
- main.cpp
- my.ini文件截图
- 运行截图
- QSettings
最开始的需求是使用qt读取不同电脑上的MySQL的my.ini文件实现在不同电脑上也可以成功登录数据库,不用担心密码和用户名不同的问题
到之后发现其实并没有什么用,因为my.ini文件中默认是没有user和password项目的看网上说是老版本遗留下来的,我个人觉得它的作用可能就是改一下端口号,然后电脑可以同时存在两个版本的数据库,当然了可以自己填上去,然后到时候直接读也可以
之后会写从数据库中读取信息等相关操作的实现
源代码
记得要在.pro文件中加上QT+=sql
还有在debug之后加上libmysql.dll动态库文件
文件结构
mysql.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include<QWidget>
#include<QSql>
#include<QSqlDatabase>
#include<QDebug>
#include<QSqlQuery>
#include<QSqlRecord>
#include <QSettings>
QT_BEGIN_NAMESPACE
QT_END_NAMESPACE
class Mysql : public QWidget
{
Q_OBJECT
public:
Mysql(QWidget *parent = nullptr);
~Mysql();
void init();
QSqlDatabase db=QSqlDatabase::addDatabase("QMYSQL");
QString sqlname,hostname,sqlpasswd,dbname,sqlport;
private:
};
#endif // MAINWINDOW_H
mysql.cpp
#include "mysql.h"
Mysql::Mysql(QWidget *parent)
: QWidget(parent)
{
init();
}
Mysql::~Mysql()
{
}
void Mysql::init()
{
// 指定my.ini文件路径
QString filePath = "E:\\SQL\\MYSQL_DATA\\my.ini";
// 创建QSettings对象
QSettings settings(filePath, QSettings::IniFormat);
// 读取MySQL的用户名和密码
sqlname= settings.value("client/user").toString();
sqlpasswd= settings.value("client/password").toString();
sqlport=settings.value("client/port").toString();
// 打印结果
qDebug() << "Username:" << sqlname;
qDebug() << "Password:" << sqlname;
qDebug() << "Password:" << sqlport;
}
main.cpp
#include "mysql.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Mysql w;
w.show();
return a.exec();
}
my.ini文件截图
运行截图
QSettings
QSettings是Qt提供的用于访问和修改应用程序配置数据的类。它支持多种格式,包括INI、注册表和JSON等。在这个示例中,使用了INI格式(通过QSettings::IniFormat)。
settings.value(“client/user”)表示从QSettings对象中获取名为"client/user"的配置项的值,返回一个QVariant类型的对象。value函数接受一个参数,即指定配置项的路径(键)。在这个示例中,"client/user"是my.ini文件中存储用户名的位置。
为了将QVariant对象转换为QString类型,可以调用toString()函数。这将返回一个QString对象,内容与原始配置项的值相匹配。
因此,settings.value(“client/user”).toString()的意思是从QSettings对象中获取"client/user"配置项的值,并将其转换为QString类型,以便在后续的代码中使用或进行其他操作。同样地,也可以使用类似的方法获取其他配置项的值。