У меня есть приложение MDI, с классами какQMdi подокон переключение
class MainWindow
{ GraphicsView *gv; };
class GraphicsView
{ Scene *scene; };
class Scene
Я создаю новый mdiSubWindow на каждый newfile()
из MainWindow
, который создает новый указатель на GraphicsView.
void MainWindow::newFile()
{
gv = new GraphicsView;
QMdiSubWindow *w = mdiArea->addSubWindow(gv);
mdiArea->setActiveSubWindow(w);
}
И конструктор GraphicsView
создает новую сцену.
GraphicsView::GraphicsView()
{
scene = new Scene;
setScene(scene);
}
Теперь, когда создано несколько подзаголовков, я теряю возможность работать в предыдущих подзаголовках. Только последний подзаголовок работает так, как ожидалось. Напр. Я могу нарисовать QGraphicsItems
только в последней под Windows, а не в предыдущих.
Я думаю, что я должен использовать activeSubWindow()
, но не мог понять, как заставить каждый subWindow реагировать на изменение вкладок. Как мне это реализовать?
Что означает «Я теряю способность работать в предыдущих под окнах»? – vahancho
@vahancho Я отредактировал и привел пример. –
Я думаю, вы используете указатель на графическую сцену и обновляете ее при создании нового представления. Вы должны обновить его, когда активируете дополнительное окно. Рассмотрим использование сигнала 'QMdiArea :: subWindowActivated()'. – vahancho