كيفية حفظ وتحميل محتويات QListWidJet إلى/من QSetting مع PYQT4؟

StackOverflow https://stackoverflow.com/questions/3870081

  •  28-09-2019
  •  | 
  •  

سؤال

لقد حصلت على QListWidget في تطبيق PYQT4 الخاص بي. أنه يحتوي على مسارات المجلدات. أرغب في حفظ محتوياتها إلى 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

يبدو أنني بحاجة فقط إلى حفظ البيانات بطريقة أخرى ثم أفعل الآن. غولت كثيرا ، ولكن ليس لديك أدنى فكرة. أنا متأكد من أن الإجابة تافهة ، لكنني عالق.

هل كانت مفيدة؟

المحلول

الحل ببساطة جدا. كنت لاستخدام 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())
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top