【问题标题】:How to save and load QListWidjet contents to/from QSetting with PyQt4?如何使用 PyQt4 在 QSetting 中保存和加载 QListWidjet 内容?
【发布时间】:2010-10-10 17:57:31
【问题描述】:

我的 PyQt4 应用中有一个 QListWidget。它包含文件夹路径。 我想将其内容保存到 QSettings 并稍后加载它们。 我使用此代码来执行此操作:

def foldersSave(self):
    folders = {} '''create dict to store data'''
    foldersnum = self.configDialog.FolderLIST.count() '''get number of items'''
    if foldersnum:
        for i in range(foldersnum):
            folders[i] = self.configDialog.FolderLIST.item(i).text() '''save items text to dict'''
        return str(folders) '''return string of folders to store in QSettings'''
    return None

但如果我这样做,文件夹路径将存储在配置文件中,例如:

musicfolders={0: PyQt4.QtCore.QString(u'/home/sam/Ubuntu One')}

所以我不知道如何加载它们。我在不同的变体中尝试过类似的东西:

def foldersLoad(self):
    folders = eval(self.tunSettings.value('musicfolders').toString())

返回错误:

TypeError: eval() arg 1 must be a string or code object

看起来我只需要以其他方式保存数据,而不是现在。 Gooled了很多,但没有任何线索。我确信答案是微不足道的,但我被困住了。

【问题讨论】:

    标签: python qt4 pyqt4 qlistwidget


    【解决方案1】:

    解决方案非常简单。我要使用 QStringList。

    def foldersSave(self):
        folders = QtCore.QStringList()
        foldersnum = self.configDialog.FolderLIST.count()
        if foldersnum:
            for i in range(foldersnum):
                print (i, " position is saved: ", self.configDialog.FolderLIST.item(i).text())
                folders.append(self.configDialog.FolderLIST.item(i).text())
            return folders
        return None
    

    加载

    def foldersLoad(self):
        folders = QtCore.QStringList()
        folders = self.tunSettings.value('musicfolders', None).toStringList()
        if folders.count():
            foldersnum = folders.count()
            for i in range(foldersnum):
                self.configDialog.FolderLIST.addItem(folders.takeFirst())
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多