如何获取QSplitter的索引和位置

1 投票
1 回答
1756 浏览
提问于 2025-04-18 15:15

在创建了一个QSplitter之后:

 splitter=QtGui.QSplitter()
 splitter.addWidget(QtGui.QLabel())
 splitter.addWidget(QtGui.QLabel())

用户可以通过左右拖动来调整分割条的位置。每次退出应用程序时,我想要查询分割条的位置。这个数据可以保存到应用程序的配置文件中,然后在下次使用时,可以通过分割条的.moveSplitter(index, pos)方法来恢复分割条的设置。

显然,要使用这个方法,我需要知道分割条的indexes和它们的pos值。那么,应该使用QSplitter的哪个属性或方法来获取这些索引和每个索引的分割条pos值呢?

1 个回答

2

可以通过使用 QSplitter.saveState() 方法来获取它当前状态的“快照”。这个方法会返回一个 PyQt4.QtCore.QByteArray 对象。你可以把这个返回的 QByteArray 对象保存到磁盘上,以后再用 QtCore.QSettings 对象把它取回来。取回的 Splitter 状态可以通过 restoreState() 方法重新赋值给它。

示例:

splitter=QtGui.QSplitter()
iniFile=os.path.join(os.path.expanduser('~'),'myAppName/myAppNameSettings.ini')
settings=QtCore.QSettings(iniFile, QtCore.QSettings.IniFormat)
splitterSettings=splitter.saveState()
if splitterSettings:
    settings.setValue("splitterSettings", splitter.saveState()) 

在应用程序打开时:

settings=QtCore.QSettings(iniFile, QtCore.QSettings.IniFormat)
splitterSettings=settings.value("splitterSettings").toByteArray()
if splitterSettings:
    splitter.restoreState(splitterSettings)

撰写回答