當前位置:
首頁 >
Qt学习笔记-仿大佬读取setting文件(简单工厂模式)
發布時間:2025/3/15
28
豆豆
生活随笔
收集整理的這篇文章主要介紹了
Qt学习笔记-仿大佬读取setting文件(简单工厂模式)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文件如下:
程序運行截圖如下:
?
代碼如下:
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文件(简单工厂模式)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Qt工作笔记-代理及自定义委托,实现开关
- 下一篇: Qt文档阅读笔记-QGraphicsBl