文件如下:

程序运行截图如下:

代码如下:

widget.h

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QHostAddress>class QSettings;namespace Ui {
class Widget;
}class ServerConfig:public QObject
{Q_OBJECT
public:ServerConfig();~ServerConfig();static ServerConfig &instance();void loadConfig(QString config);QHostAddress m_address;quint16 m_port;quint16 m_threads;int m_maxConnections;private:void parseConfig(const QString &config);};class Widget : public QWidget
{Q_OBJECTpublic:explicit Widget(QWidget *parent = 0);~Widget();private:Ui::Widget *ui;
};#endif // WIDGET_H

main.cpp

#include "widget.h"
#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.show();return a.exec();
}

widget.cpp

#include "widget.h"
#include "ui_widget.h"
#include <QFile>
#include <QSettings>Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui->setupUi(this);ServerConfig &config=ServerConfig::instance();config.loadConfig("server.conf");qDebug()<<"address:"<<config.m_address;qDebug()<<"port:"<<config.m_port;qDebug()<<"threads:"<<config.m_threads;qDebug()<<"maxConnections:"<<config.m_maxConnections;
}Widget::~Widget()
{delete ui;
}ServerConfig::ServerConfig()
{}ServerConfig::~ServerConfig()
{}ServerConfig &ServerConfig::instance()
{static ServerConfig config;return config;
}void ServerConfig::loadConfig(QString config)
{if(config.isEmpty()||!QFile::exists(config)){config="server.conf";if(!QFile::exists(config)){qDebug()<<"ServerConfig::loadConfig failed: no"<<config;return;}}parseConfig(config);
}void ServerConfig::parseConfig(const QString &config)
{QSettings conf(config,QSettings::IniFormat);conf.beginGroup("server");QString strHost=conf.value("host","localhost").toString();if(!strHost.isEmpty()&&!m_address.setAddress(strHost)){m_address=QHostAddress::LocalHost;}m_port=conf.value("port",8088).toUInt();m_threads=conf.value("worker_threads",4).toUInt();m_maxConnections=conf.value("connections",200).toInt();conf.endGroup();
}

思路:这里面ServerConfig并不是完全的解耦和。我们还是知道他内部的部分细节。

逻辑:让ServerConfig生成一个instance,然后在loadConfig,这个逻辑十分简单!

Qt学习笔记-仿大佬读取setting文件(简单工厂模式)相关推荐

  1. QT学习笔记(八)资源文件

    一.创建工程 创建工程时,打开"generate form",即创建界面 创建完成后可以看到:多了一个forms文件夹,里面有mainwindow.ui文件 并且:pro文件里也会 ...

  2. Qt工作笔记-仿大佬风格代码(使用#ifdef Q_OS_WIN32)

    程序运行截图如下: 代码如下: #include <QApplication> #include <QDebug>int main(int argc, char *argv[] ...

  3. pandas学习笔记四之读取写入文件

  4. QT学习笔记(摘抄)

    QT学习笔记-1.QT主要的对象 说来惭愧学习c++很长时间了一直没有使用c++开发过软件界面 所以现在想认认真真的学习一个c++图形界面框架库 本来想学习Xwidget但是这个资料不大好找 有啥问题 ...

  5. Qt学习笔记之文件处理

    Qt提供了通用的文件处理类QFile和处理文本的QTextStream类和处理二进制数据的QDataStream类,这些流操作极大地方便了对文件的督促存储.对文件信息和目录进行操作的类是QfileIn ...

  6. QT学习笔记之对话框

    QT学习笔记之对话框 对话框是一种用户界面(窗口),它的主要功能是输出信息和接收用户的输入.在每个对话框内一般都有一些控件,对话框依靠这些控件与用户进行交互. 1)       模式对话框:用户只能与 ...

  7. 【QT学习笔记】基于QT的天气预报

    [QT学习笔记]基于QT的天气预报 前言 那就开始吧! 先看一下效果 颜面最重要,画个UI 构造实现 怎么开始? 开始解析数据 关于城市切换 ok 最后源码献上 感谢 前言 学习qt已经有一段时间了, ...

  8. Qt学习笔记,Qt国际化

    Qt学习笔记,Qt国际化 Qt国际化步骤: 第一步:设置.pro文件,加入TRANSLATIONS为国际化做准备 TRANSLATIONS = language/language_en.ts\     ...

  9. C# 学习笔记(12)hex文件转bin文件小工具

    C# 学习笔记(12)hex文件转bin文件小工具 hex文件格式 hex文件格式网上有很多 我这里参考HEX文件格式详解https://blog.csdn.net/weixin_39752827/a ...

最新文章

  1. 【error】error: field * has incomplete type
  2. 【评论】一个老程序员的建议
  3. 【降维解法:最大字段和-最大子矩阵和-最终版最大子长方体和】【UVA10755】Garbage Heap...
  4. Tomcat在修改代码后不会自动reload解决办法
  5. 大数据学习笔记39:Hive - 内置函数(2)
  6. Android M(6.0) 权限相关
  7. 快速排序(Quick Sort)附C语言代码
  8. 橘子origin游戏平台如何绑定登陆验证/二次验证码?
  9. Vue项目中使用xlsx实现批量导入导出功能
  10. 如何压缩图片大小不改变清晰度?怎样一键压缩图片?
  11. 日本风俗业数据_神奇宝贝如何融入日本民俗
  12. android 拔插键盘自动切换输入法
  13. linux cut指令
  14. (1)Proteus 8.9上的STM32仿真系列(HAL)---流水灯
  15. python3手动配置环境变量
  16. C++的 pack 与 unpack的方法
  17. 华硕主板如何设置开机自启_华硕主板开机启动项调整的三种方法
  18. python讲义学习 day02
  19. sap 个模块 含义 FI/CO/MM/PP/QM/WM 及其它 分别指什么模块?是干什么用的?
  20. HDU 1686 [KMP] --by二汪

热门文章

  1. 买二手房子经济实惠。
  2. 主机路由在计算机中的应用
  3. 做一个程序员,是不是“努力就会成功”?现实残酷但又必须面对!
  4. pl/sql developer快速输入select * from
  5. 管理成本降低10%,且看制造企业如何打造“智慧供应链”
  6. 从招行数据架构调整,详解企业急需的数据中台与5大数字化转型
  7. C++还是Java常常无法想起数组
  8. 在演唱过后的飞秋代码
  9. 第 5 节:前端面试指南 — Vue 篇(附面试题)
  10. linux系统编程 传智播客,传智播客王保明Linux培训系列教程全120集