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é.

Était-ce utile?

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
scroll top