Comment enregistrer et charger le contenu QListWidjet à / de QDéfinition avec PyQt4?
-
28-09-2019 - |
Question
J'ai une QListWidget dans mon application PyQt4. Il contient des chemins de dossiers. Je veux sauver son contenu QSettings et les charger plus tard. J'ai utilisé ce code pour faire ceci:
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
Mais si je fais pour que les dossiers chemins sont stockés dans le fichier de configuration comme:
musicfolders={0: PyQt4.QtCore.QString(u'/home/sam/Ubuntu One')}
Je ne sais pas comment les charger ensuite. J'ai tryed quelque chose comme ceci dans différentes variantes:
def foldersLoad(self):
folders = eval(self.tunSettings.value('musicfolders').toString())
Il renvoie l'erreur:
TypeError: eval() arg 1 must be a string or code object
On dirait que j'ai juste besoin d'enregistrer les données d'une autre manière alors je le fais maintenant. Gooled beaucoup, mais ont aucune idée. Je suis sûr que la réponse est trivial, mais je suis bloqué.
La solution
La solution est très simple. Je devais utiliser 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
et de la charge
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())
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow