Como salvar e carregar o conteúdo QLISTWIDJET de/para o QSetting com Pyqt4?
-
28-09-2019 - |
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.
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