#include #include #include class MyWidget : public QWidget { public: MyWidget(QWidget *parent) : QWidget(parent), originalParent(NULL), child(this) { QPalette palette = child.palette(); palette.setColor(child.backgroundRole(), QColor(255, 0, 0)); child.setPalette(palette); child.setAutoFillBackground(true); std::cout << "winId() = " << child.winId() << "\n"; } ~MyWidget() { } private: void mouseDoubleClickEvent(QMouseEvent *) { if (originalParent == NULL) { std::cout << "parent winId() = " << parentWidget()->winId() << "\n"; originalParent = parentWidget(); //setParent(window()); //show(); //window()->showFullScreen(); setParent(0); show(); showFullScreen(); } else { std::cout << "parent winId() = " << originalParent->winId() << "\n"; showNormal(); setParent(originalParent); originalParent = NULL; show(); //window()->showNormal(); } std::cout << "winId() = " << child.winId() << "\n"; } QWidget *originalParent; QWidget child; }; int main(int argc, char *argv[]) { QApplication app(argc, argv); QMainWindow window; new MyWidget(new QWidget(&window)); window.show(); return app.exec(); }