我在应用程序关闭时保存我的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?我曾经使用过,但它返回2个值。
答案 0 :(得分: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部分。