Как сохранить и загрузить содержимое QListwidjet в / из QSetting с PYQT4?
-
28-09-2019 - |
Вопрос
У меня есть 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
Похоже, мне просто нужно сохранить данные какой-то другой путь, тогда я делаю сейчас. Гули много, но не имеют никакого ключа. Я уверен, что ответ тривиален, но я застрял.
Решение
Решение очень просто. Я должен был использовать 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())
Не связан с StackOverflow