如何在pyqt中正确保存和恢复复选框

时间:2014-03-04 21:13:34

标签: python qt checkbox pyqt

我在应用程序关闭时保存我的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个值。

1 个答案:

答案 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部分。