0

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

別の方法でデータを保存する必要があるようですが、今は保存しています。たくさんグーグルしたが、手がかりがない。答えは些細なことだと思いますが、行き詰まっています。

4

1 に答える 1

0

解決策は非常に簡単です。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())
于 2010-10-10T09:57:31.983 に答える