I'm trying to save the state of qtreeview with the directories expanded or not (load in the state I left when I closed .) using Qsettings but I can't

99 views Asked by At

I am using the code below. Mainwindow's state is preserved but qtreeviw's is not. import sys from PyQt5.QtCore import QSettings, QByteArray from PyQt5.QtWidgets import QApplication, QTreeView, QFileSystemModel, QVBoxLayout, QWidget from PyQt5 import QtCore

class MyApp(QWidget):
def __init__(self):
    super().__init__()
    
    self.tree = QTreeView()
    self.settings = QSettings('testorg', 'testapp')
    
    try:
        self.tree.header().restoreState(self.settings.value("estado_header"))
        self.resize(self.settings.value('window size'))
        self.move(self.settings.value('window position'))
    except:
        pass
   
    self.model = QFileSystemModel()
    self.model.setRootPath(r"C:\Users\dan-s>")
    self.tree.setModel(self.model)
    #self.tree.header().restoreState(self.settings.value("estado_header"))
    #self.tree.collapseAll()
    layout = QVBoxLayout()
    layout.addWidget(self.tree)
    self.setLayout(layout)


def closeEvent(self, event):
    self.settings.setValue('window size', self.size())
    self.settings.setValue('window position', self.pos())
    state = self.tree.header().saveState()
    self.settings.setValue('estado_header', state)
    super().closeEvent(event)
 
 
app = QApplication(sys.argv)        

demo = MyApp()
demo.show()

sys.exit(app.exec_())

I've tried other ways but I can't solve it.

0

There are 0 answers