QWidget中的setParent 不能设置控件的父控件是QWindow ,要如何解决
时间: 2023-06-12 13:06:18 浏览: 59
QWidget的setParent方法主要是用于设置控件的父控件,而QWindow不是QWidget的子类,所以不能使用setParent方法来设置QWindow的父控件。
如果想要将QWidget作为QWindow的父控件,可以使用QWindow::fromWinId()方法来获取QWindow的指针,并使用QWidget::create()方法创建一个QWidget对象,然后将QWidget对象的windowHandle()方法返回的QWindow指针设置为QWindow的父对象。
具体实现代码如下:
```cpp
QWidget *parentWidget = new QWidget();
QWindow *parentWindow = QWindow::fromWinId(parentWidget->winId());
QWindow *childWindow = new QWindow(parentWindow);
QWidget *childWidget = QWidget::createWindowContainer(childWindow, parentWidget);
```
在上面的代码中,首先创建一个QWidget对象parentWidget,然后获取parentWidget的winId(),并通过QWindow::fromWinId()方法获取parentWindow的指针。接着创建一个childWindow对象,并将parentWindow设置为childWindow的父对象。最后,使用QWidget::createWindowContainer()方法创建一个childWidget对象,并将childWindow对象和parentWidget对象作为参数传入,来将childWidget作为parentWidget的子控件。