在QMDiarea处理多个文档的最佳实践



我需要设计和开发一种图形片段,可以编辑包含图形元素的自定义文件等。

我希望该软件包含许多文档,这要归功于QMdiArea,这实际上是我QMainWindow内部的中央小部件。

对于每个文档,我也需要QGraphicsViewQGraphicsScene,因为它们一起工作。

现在,我的问题是,我应该将QGraphicsView带到其自己的QGraphicsScene上,还是应该创建一个继承QWidget并处理QGraphicsView/QGraphicsScene实例的类?

还是我没有考虑过的任何解决方案?

首先,我认为您不需要Qwidget来管理QGraphicsScene和QgraphicsView。考虑到这一点,"最佳实践"通常是为了避免在可能的情况下进行亚分。最终,您可能必须进行子类QgraphicsView(如果您想更改其默认功能),但是问题中没有任何东西意味着您现在需要立即进行。另请注意,有一个函数QGraphicsView::scene()返回视图的当前场景,因此无需使场景成为成员(已经是)。

如果您需要访问特定的视图或场景,则可以做类似的事情:

MainWindow::onActionClearActiveWindow() // just an example
{
    QMdiArea *myMdiArea = static_cast<QMdiArea*>(centralWidget());
    QGraphicsView *activeView = static_cast<QGraphicsView*>(myMdiArea->widget());
    QGraphicsScene *activeScene = activeView->scene();
    activeScene->clear();
}

另请参见QMdiArea::subWindowList()返回所有子窗口的列表。

相关内容

  • 没有找到相关文章

最新更新