Название: QMainwindow + дополнительное окно? Отправлено: shadow от Май 06, 2015, 12:31 Привет!
Есть у меня приложение QMainWindow в котором я рисую(QGraphicsScene,QGraphicsView) некие элементы (QGraphicsItem)... Я хочу еще чтобы по двойному клику на элементе открывалось окно (на котором я также хочу рисовать элементы QGraphicsItem). Так вот как сделать это окно чтобы оно наследовалось от основного приложения (закрывалось при закрытии основного приложения, не выходило за рамки основного окна)? В примере я попробовал QWidget но это не то что мне надо :( Название: Re: QMainwindow + дополнительное окно? Отправлено: RovingStone от Май 06, 2015, 13:23 Посмотрите в сторону MDI:
http://doc.qt.io/qt-5/qtwidgets-mainwindows-mdi-example.html Подходит? Название: Re: QMainwindow + дополнительное окно? Отправлено: RovingStone от Май 06, 2015, 14:32 Также можно посмотреть в сторону QDialog. Переопределите класс QDialog и используйте его подобно главному окну. В конструкторе передайте родительский виджет. Окно можно сделать модальным, чтобы быть сверху основного окна. http://doc.qt.io/qt-5/qdialog.html Он закроется вместе с основным окном.
Чтобы окно не выходило за границы родительского - обрабатывать события QMoveEvent. Если использовать EventFilter, то можно игнорировать перемещение окна за пределы родительского. Об этом тут http://doc.qt.io/qt-5/eventsandfilters.html Название: Re: QMainwindow + дополнительное окно? Отправлено: shadow от Май 08, 2015, 15:31 Попробовал mdi, вроде то но столкнулся с проблемой как добавить из класа node новое окно:
Код: mdiArea->addSubWindow(child) Или как переопределить(перехватить) событие двойного нажатия на елементе node Код: void Node::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) Название: Re: QMainwindow + дополнительное окно? Отправлено: gil9red от Май 08, 2015, 15:56 Или как переопределить(перехватить) событие двойного нажатия на елементе node Код: void Node::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) Воспользоваться eventFilter :) Название: Re: QMainwindow + дополнительное окно? Отправлено: Igors от Май 08, 2015, 16:19 Воспользоваться eventFilter :) Согласен, MDI = black sheep of the familyНазвание: Re: QMainwindow + дополнительное окно? Отправлено: shadow от Май 13, 2015, 16:10 Или как переопределить(перехватить) событие двойного нажатия на елементе node Код: void Node::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) Воспользоваться eventFilter :) В констуктор добавляю: Код: view->viewport()->installEventFilter(this); Код: bool DiagramWindow::eventFilter(QObject *, QEvent *event) |