qt读写配置文件(.ini)

INI

INI文件格式是某些平台或软件上的配置文件的非正式标准,以节(section)和键(key)构成,常用于微软Windows操作系统中。INI文件是Initialization File的缩写,即初始化文件。除了windows现在很多其他操作系统下面的应用软件也有.ini文件,用来配置应用软件以实现不同用户的要求。一般不用直接编辑这些.ini文件,应用程序的图形界面即可操作以实现相同的功能。INI文件被用来对操作系统特定程序初始化进行参数设置


文件格式


节(section)

节用方括号括起来,单独占一行,例如:

[section]


键(key)
键(key)又名属性(property),单独占一行用等号连接键名和键值,例如:

name=value


简介:

QSettings类提供了持久的跨平台应用程序设置。



用户通常期望应用程序记住它的设置(窗口大小、位置等)所有会话。这些信息通常存储在Windows系统注册表,OS X和iOS的属性列表文件中。在Unix系统中,在缺乏标准的情况下,许多应用程序(包括KDE应用程序)使用INI文本文件。


QSettings围绕这些抽象技术,使我们能够以便携的方式保存和恢复应用程序设置。它还支持自定义存储格式。


QSettings API基于QVariant,可以保存很多基础的类型,比如 QString、QRect、QImage等。


如果你需要的是一个非持久性的基于内存结构,可以考虑使用QMap<QString, QVariant>代替。


我们知道,这些settings一般都是存在系统里的,比如windows一般都写在系统注册表或者写INI文件,mac系统一般都在XML文件里,那么按照一般的标准来说,许多应用程序是用INI文件来实现的。而Qsettings就是提供了一种方便的方法来存储和恢复应用程序的settings

 1   QSettingsAPI是基于QvariantQvariant是一种数据类型的集合,它包含了大部分通常的Qt数据类型,比如QStringQRecQImage,等等。

       当我们创建一个QSetting 对象时,我们需要给它传递两个参数,第一个是是公司或者组织的名称,第二个是应用程序的名称,例如

    Settings = Qsettings(“MyPATH”,”QtKPN”)

假如我们在应用程序中多次要用到Qsettings,为了简单其间,我们可以在主程序中先如下声明。

   QtCore.QCoreApplication.setOrganizationName("MySoft")

QtCore.QCoreApplication.setOrganizationDomain("mysoft.com")

QtCore.QCoreApplication.setApplicationName("QtPad")

当然前提是已经 from PyQt4 importQtCore

然后在应用程序的任何地方想要声明一个Qsettings类型的变量,便不需要书写两个参数了,直接用settings = Qsettings即可。

然后在应用程序的任何地方想要声明一个Qsettings类型的变量,便不需要书写两个参数了,直接用settings = Qsettings即可。

那么如何用它来保持应用程序的settings信息呢?我们以字典数据类型与之类比,它也有key,以及对应的value。比如下面例子:

settings= Qsettings(“MySoft”,”QtPad”)

Mainwindow =  QmainWindow()
   settings.
setValue(“pos”,QVariant(Mainwindow.pos())

settings.setValue(“size”,QVariant(Mainwindow.size())

上面两句就是把当前窗口的位置,和大小两个信息记录到了settings中,其中的key就是”pos””size”两个Qstring类型,而它所对应的值就是QVariant类型的。当然如果我们要写的key已在settings中存在的话,则会覆盖原来的值,写入新值。

那么实际应用中我们一般会如下:

pos=settings.value("pos", QVariant(QPoint(200,200))).toPoint())

size=settings.value("size", QVariant(QSize(400,400))).toSize())

self.resize(size)

self.move(pos)

意思是,如果settings里有以前存下的(setValue设置的)possize的值,则读取,如果没有,不会返回null,而会使用我们给它的起始值——defaultvalue——即应用程序第一次运行时的情况。

 注意:因为QVariant是不会提供所有数据类型的转化的,比如有toInt(),toPoint(),toSize(),但是却没有对QcolorQimageQpixmap等数据类型的转化,此时我们可以用QVariant.value(),具体参看QVariant模块说明。

由此我们可以看出,这个writesettings其实就是个写注册表的过程。

当然,我们也可以不写注册表,我们写ini文件:

settings =QSettings("./QtPad.ini", QSettings.IniFormat)

settings.setValue("pos", QVariant(self.pos()))

settings.setValue("size", QVariant(self.size()))

就会在当前文件夹下产生一个QtPad.ini文件,打开后文件内容为:

[General]

pos=@Point(200 200)

size=@Size(400 400)



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

漫天飞舞的雪花

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值