Как сохранить и загрузить содержимое QListWidjet в / из QSetting с PyQt4? - PullRequest
0 голосов
/ 06 октября 2010

У меня есть приложение QListWidget в моем приложении PyQt4.Содержит пути к папкам.Я хочу сохранить его содержимое в 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

Похоже, мне просто нужно сохранить данные другим способом, чем сейчас.Много гулял, но понятия не имею.Я уверен, что ответ тривиален, но я застрял.

1 Ответ

0 голосов
/ 10 октября 2010

Решение очень простое.Я должен был использовать 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())
...