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

如何在“QSettings”中保存/更改“QLineEdit”的文本并进行“QPushButton”调用

事件模式引导后无法更改 td 中的值

如何在sqlalchemy中的值更改后触发事件

QSettings保存程序设置