Pergunta

Eu tenho um QlistWidget no meu aplicativo PYQT4. Ele contém caminhos das pastas. Quero salvar seu conteúdo em QSettings e carregá -los mais tarde. Eu usei este código para fazer isso:

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

Mas se eu fizer pastas, os caminhos são armazenados em arquivo de configuração como:

musicfolders={0: PyQt4.QtCore.QString(u'/home/sam/Ubuntu One')}

Então, eu não tenho ideia de como carregá -los então. Eu tentei algo assim em variantes diferentes:

def foldersLoad(self):
    folders = eval(self.tunSettings.value('musicfolders').toString())

Retorna erro:

TypeError: eval() arg 1 must be a string or code object

Parece que eu só preciso salvar dados de outra maneira e depois agora. Gooled muito, mas não tem idéia. Tenho certeza de que a resposta é trivial, mas estou preso.

Foi útil?

Solução

A solução é muito simplesmente. Eu deveria usar o 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

e carregar

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())
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top