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 best solutions below