如何在文件中保存Qt图形场景项并再次打开它?

时间:2013-03-01 11:19:53

标签: python qt qt4 pyqt pyside

我对文件流没有任何经验,并尝试将场景项目保存到文件中供以后使用。 我正在使用PySide和Qt 4.7 lib。我是否必须使用writeRawData来保存项目列表或什么?

我将不胜感激任何帮助。一些例子可以让我的一天。感谢。

1 个答案:

答案 0 :(得分:1)

无法直接将QGraphicsItem保存在可重新加载的文件中(pixmap除外)。

但是,您可以创建一个文件,其中包含视图中每个项目的说明。您需要做的是列出定义每个项目的每个信息(项目类型,位置,形状等)并将它们存储在文件中。

例如,收集rect,ellipse和line item的信息:

scene = QGraphicsScene();
scene.addEllipse( 100, 100, 50, 50 )
scene.addRect( 200, 12, 120, 50 )
scene.addLine( 50, 70, 100, 400 )

for item in scene.items():
    if item.type() == QGraphicsEllipseItem().type():
        print "Ellipse",  item.rect()
    elif item.type() == QGraphicsRectItem().type():
        print "Rectangle",  item.rect()
    elif item.type() == QGraphicsLineItem().type():
        print "Line", item.line().p1(), item.line().p2()