如何使用 PyQt4 在 QSetting 中保存和加载 QListWidjet 内容? [英] How to save and load QListWidjet contents to/from QSetting with PyQt4?

查看:28
本文介绍了如何使用 PyQt4 在 QSetting 中保存和加载 QListWidjet 内容?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的 PyQt4 应用程序中有一个 QListWidget.它包含文件夹路径.我想将其内容保存到 QSettings 并稍后加载它们.我用这个代码来做到这一点:

I've got a QListWidget in my PyQt4 app. It contains folders paths. I want to save its contents to QSettings and load them later. I used this code to do this:

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

但是,如果我使文件夹路径存储在配置文件中,例如:

But if I make so folders paths are stored in config file like:

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

所以我不知道如何加载它们.我在不同的变体中尝试过这样的事情:

So I have no idea how to load them then. I've tryed something like this in different variants:

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

返回错误:

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

看起来我现在只需要以其他方式保存数据即可.Gooled 很多,但不知道.我确定答案很简单,但我被卡住了.

It looks like I just need to save data some other way then I do now. Gooled a lot, but have no clue. I'm sure the answer is trivial, but I'm stuck.

推荐答案

解决方案很简单.我要使用 QStringList.

The solution is very simply. I were to use 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())

这篇关于如何使用 PyQt4 在 QSetting 中保存和加载 QListWidjet 内容?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆