Цитата(OlegIT @ 11.6.2019, 15:50 ) | | обработчики мыши не сигнальные |
пример:| Код | #include <iostream> #include <QApplication> #include <QWidget> #include <QWindow> #include <QMouseEvent> #include <QScreen>
class Child: public QWindow { Q_OBJECT public: Child(QScreen *targetScreen = nullptr): QWindow(targetScreen) {} void mousePressEvent(QMouseEvent* event) { emit clicked(event); } signals: void clicked(QMouseEvent* event); };
class Parent: public QWidget { private: Child* childWindow; QWidget* childWidget; public: Parent(QWidget* parent): QWidget(parent) { setGeometry(100, 100, 700, 500); childWindow = new Child(); childWidget = createWindowContainer(childWindow, this); childWidget->setGeometry(30, 30, 300, 300); connect(childWindow, &Child::clicked, this, &Parent::mousePressEvent); } void mousePressEvent(QMouseEvent*) { std::cout << "parent pressed\n"; } };
int main(int argc, char* argv[]) { QApplication app(argc, argv); Parent parent(nullptr); parent.show(); return app.exec(); } #include "test.moc" |
Цитата(OlegIT @ 11.6.2019, 15:50 ) | | хитрым образом |
суть в том, что в обработчике дочки вызывается обработчик родителя (правда, в нормальных условиях дочка его не должна видеть)
Цитата(OlegIT @ 10.6.2019, 14:49 ) | | до родительского QWidget |
вроде как QWidget не должен быть родителем для QWindow: не совсем совместимы, разные механизмы реализации. |