QSettings 中的值更改时的事件?
Posted
技术标签:
【中文标题】QSettings 中的值更改时的事件?【英文标题】:Event when value in QSettings changes? 【发布时间】:2016-01-29 12:01:46 【问题描述】:我不确定如何将设置更改立即投射到我的应用程序上。一种方法是使用eventFilter
收听一些QEvent
。
这是一个选项吗?有没有这样的事件?如果监听事件是个坏主意,那么正确的解决方案是什么?
【问题讨论】:
【参考方案1】:QSettings
不会在发生更改时通知您。如果您想在设置实际更改时处理该事件,您应该为QSettings::fileName()
文件设置一个QFileSystemWatcher
。
另一个(可能更简洁)的解决方案是创建一个包装类,该类定义一个适当的信号,并在您通过它更新设置时发出它。
【讨论】:
Qt 并不总是立即将设置写入文件中,因此这可能行不通。 如果您创建一个 QSettings 实例作为局部变量来更新您的设置,那么析构函数将保存更改。或者您可以手动调用sync()
来更新设置。可能,创建一个具有正确设计信号的包装类是一种更简洁的解决方案。
我使用设置管理器类。不确定这是否是最好的设计,但是对于您的常用小部件,您只需将其添加到管理器中,它就会处理所有连接、setValue()、value() 调用等等。当其中发生变化时,您可以轻松发出信号。以上是关于QSettings 中的值更改时的事件?的主要内容,如果未能解决你的问题,请参考以下文章
fontComboBox QSettings 应用程序意外退出
Qt - 将 QString 路径保存到注册表中的 QSettings