栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何保存PySide树视图模型结构

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何保存PySide树视图模型结构

您的问题尚不清楚,因为您没有说要保存树形结构的形式。

假设您不太在意XML是可以接受的,则可以查看Qt文档中的Simple DOM Model Example。

Qt
docs中的大多数示例已移植到PyQt,并提供了源代码,可从此处下载。可以在下找到简单DOM模型示例

examples/itemviews

编辑

我忽略了您正在使用PySide。对于PySide等效停泊的例子可以发现这里,或者在PySide源代码下

sources/pyside-examples/examples/itemviews

更新

这是一个使用xml.etree序列化树的简单示例:

import sipsip.setapi('QString', 2)from xml.etree import cElementTree as etreefrom PyQt4 import QtGui, QtCoreclass Window(QtGui.QWidget):    def __init__(self, xml):        QtGui.QWidget.__init__(self)        self.tree = QtGui.QTreeWidget(self)        self.tree.header().hide()        self.importTree(xml)        self.button = QtGui.QPushButton('Export', self)        self.button.clicked[()].connect(self.exportTree)        layout = QtGui.QVBoxLayout(self)        layout.addWidget(self.tree)        layout.addWidget(self.button)    def importTree(self, xml):        def build(item, root): for element in root.getchildren():     child = QtGui.QTreeWidgetItem(         item, [element.attrib['text']])     child.setFlags(         child.flags() | QtCore.Qt.ItemIsEditable)     build(child, element) item.setExpanded(True)        root = etree.fromstring(xml)        build(self.tree.invisibleRootItem(), root)    def exportTree(self):        def build(item, root): for row in range(item.childCount()):     child = item.child(row)     element = etree.SubElement(         root, 'node', text=child.text(0))     build(child, element)        root = etree.Element('root')        build(self.tree.invisibleRootItem(), root)        from xml.dom import minidom        print(minidom.parseString(etree.tostring(root)).toprettyxml())if __name__ == '__main__':    import sys    app = QtGui.QApplication(sys.argv)    window = Window("""<?xml version="1.0" ?><root>    <node text="Child (0)">        <node text="Child (0)"> <node text="Child (0)"/> <node text="Child (1)"/>        </node>        <node text="Child (1)"> <node text="Child (0)"/> <node text="Child (1)"/>        </node>    </node>    <node text="Child (1)">        <node text="Child (0)"> <node text="Child (0)"/> <node text="Child (1)"/>        </node>        <node text="Child (1)"> <node text="Child (0)"/> <node text="Child (1)"/>        </node>    </node></root>        """)    window.setGeometry(800, 300, 300, 300)    window.show()    sys.exit(app.exec_())


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/645205.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号