将Qcombobox的Qsettings写入文件而不关闭Widget

Posted

技术标签:

【中文标题】将Qcombobox的Qsettings写入文件而不关闭Widget【英文标题】:Writing Qsettings of Qcombobox to a file without closing Widget 【发布时间】:2020-03-04 13:03:35 【问题描述】:

Qtablewidget 作为启动小部件运行,并将Con 小部件导入QTableWidget。来自QCombobox 希望保存并恢复到具有目录路径的文件。每个小部件和布局都有效,问题在于 QCombobox 保存功能。想启动和运行应用程序,当 Qcombobox 的值改变时,self.writeSettings 函数应该运行和写入?但它不起作用。想知道这里有什么问题吗?任何帮助表示赞赏。我在下面重现了最少且高效的代码。

class CON(QtWidgets.QWidget):
    def __init__(self, rowTable, parent=None):
        super(CON, self).__init__(parent)  
        self.rowtable = rowTable
        self.combo = QtWidgets.QComboBox()
        self.combo.addItems(["15","20","25","30","37","45","50","55",
                       "60","67","75","85","95","105"])

        ------------------------------------

       self.combo.activated.connect(self.setdata)
       self.readSettings()

    @QtCore.pyqtSlot(int)
    def setdata(self, index):
        self.writeSettings()


    def readSettings(self):
        settings = QtCore.QSettings('files/con.ini'.format(self.rowtable) ,QtCore.QSettings.IniFormat)
        settings.beginGroup("Con")
        self.combo.setCurrentIndex(settings.value("Conoption", 4))
        settings.endGroup()

    def writeSettings(self):
        settings = QtCore.QSettings('files/con.ini'.format(self.rowtable) ,QtCore.QSettings.IniFormat)
        settings.beginGroup("Con")
        settings.setValue("Conoption",self.combo.currentIndex())
        settings.endGroup()

【问题讨论】:

我不明白你,除了你提供的代码不是 MRE 我明白这还不够清楚。我需要重现一个可行且非常短的代码,但首先明天更新并让您知道代码何时更新。 我已经修补了你的代码,我可以执行它,所以我遇到了我在回答中指出的问题。另一方面,令人讨厌的是,您意识到自己的问题不够清晰,并且不努力改进它。 SO 要求您花时间发布最好的问题,因为我们会努力为您提供帮助。 这是很长的代码,我尽量缩短,所以你们可能很快就会发现错误。当我觉得信息不够时,我确实需要时间来重现问题。这就是为什么我在上一篇文章中提到明天更新代码的原因。尽可能多的介绍。 首先当我运行代码时,没有给我任何错误,并查看我的文件以查看 writeSetting 确实创建了任何带有 con0 等的文件......没有这样的文件。但是我很快就会更新...谢谢您的回复。 【参考方案1】:

我得到的唯一错误是读取的值被解释为 str,因此为避免这种情况,您必须指明读取的类型:

settings.beginGroup("Con")
self.combo.setCurrentIndex(settings.value("Conoption", 4, int))
settings.endGroup()

【讨论】:

我将您的答案标记为正确,我确实将代码切成小块并且只得到 str 错误。无需上传其他更新,谢谢。

以上是关于将Qcombobox的Qsettings写入文件而不关闭Widget的主要内容,如果未能解决你的问题,请参考以下文章

Qt QSettings 是不是会在加载后将键/值保留在内存中?

QSettings提供了非常方便的注册表读写

QSettings 读/写ini配置文件中的数组数据

QSettings 类

QSettings使用方法

QSettings - ini 文件的位置在哪里?