【问题标题】:How to save and restore checkbox properly in pyqt如何在pyqt中正确保存和恢复复选框
【发布时间】:2014-04-06 15:35:03
【问题描述】:

我在应用程序关闭时保存我的 ui 复选框状态并在应用程序打开时恢复它。

这是我在关闭活动期间的电话:

settings.setValue("checkBoxReplace", self.ui.checkBoxReplace.checkState());

这是我在 ui 初始化期间的调用:

value = settings.value("checkBoxReplace").toInt()[0]   # ??? works, but is there a more proper way?
self.ui.checkBoxReplace.setCheckState(value)   # restore checkbox

上述调用有效,但我想知道我是否正确读取存储的 QVariant?我用过toInt,但它返回2个值。

【问题讨论】:

  • 在 C++ 中也是类似的。唯一的区别是在 pyqt QVariant::toInt 返回 int 值和布尔值 ok 标志,而在 C++ 中,ok 标志是使用指针参数检索的。所以是的,你的代码似乎很正确。

标签: python qt checkbox pyqt


【解决方案1】:

正如已经指出的,在 PyQt 中 QVariant.toInt 返回值的元组,加上一个指示转换是否成功的标志。所以你的代码是完全正确的。

但是,值得指出的是,您可以通过在程序开头添加以下内容来完全消除这些 QVariant 转换:

import sip
sip.setapi('QVariant', 2)
from PyQt4 import QtCore, QtGui

有了这个,任何返回QVariant 的Qt 方法都将返回一个python 类型(这只需要python2;python3 默认有这种行为)。也可以用同样的方法消除QString——更多细节请参见docs

PS:如果你打算走这条路,你可能还应该看看 PyQt 文档中的 Support for QSettings 部分。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-28
    • 2017-01-26
    • 2013-06-12
    • 2016-05-01
    • 2019-05-25
    • 1970-01-01
    相关资源
    最近更新 更多