2010-10-06 54 views
0

我在我的PyQt4應用程序中有一個QListWidget。它包含文件夾路徑。 我想將其內容保存到QSettings並稍後加載它們。 我用這個代碼來做到這一點:如何使用PyQt4將QListWidjet內容保存到/從QSetting中加載?

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')} 

所以我不知道如何去加載它們即可。我tryed這樣的事情在不同的變體:

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

它會返回錯誤:

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

它看起來像我只需要保存數據和其它一些方式,我現在要做的。 很多,但沒有線索。我相信答案是微不足道的,但我被卡住了。

回答

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()) 
相關問題