如何保存和加载qlistWidjet内容到使用PYQT4的QSETTING/从QSETTING中?
-
28-09-2019 - |
题
我的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
看来我只需要以其他方式保存数据,然后我现在就这样做了。鹅很多,但不知道。我敢肯定答案是微不足道的,但是我被困了。
解决方案
解决方案非常简单。我要使用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