我有一个MDI应用程序,类为
class MainWindow
{ GraphicsView *gv; };
class GraphicsView
{ Scene *scene; };
class Scene
我正在newfile()
MainWindow
创建一个新的mdiSubWindow,它会创建一个指向GraphicsView的新指针。
void MainWindow::newFile()
{
gv = new GraphicsView;
QMdiSubWindow *w = mdiArea->addSubWindow(gv);
mdiArea->setActiveSubWindow(w);
}
GraphicsView
的构造函数创建了一个新场景。
GraphicsView::GraphicsView()
{
scene = new Scene;
setScene(scene);
}
现在,当创建了多个子窗口时,我将失去在以前的子窗口中工作的能力。只有最新的子窗口按预期工作。例如。我只能在最新的Sub Windows中绘制QGraphicsItems
而不是之前的。{/ p>
我认为我应该使用activeSubWindow()
,但无法弄清楚如何让每个子窗口响应标签的更改。我该如何实现呢?
答案 0 :(得分:0)
让它发挥作用。
我创建了一个QList<QPair>
,用于存储一对子窗口和视图。
windowViewList.append(qMakePair(w, view));
然后subWindowActivated()
信号用于调用以下函数来更新视图指针。
void MainWindow::updatePointers()
{
QMdiSubWindow *m = mdiArea->activeSubWindow();
foreach (windowViewPair v, windowViewList)
{
if (m == v.first)
gv = v.second;
}
}