1.首先要知道qml的窗口都在被QWindow窗口加载和跟Qwidget是不同类型,不能简单的用setParent函数设置
这是Qwindow的设置父窗口函数
void setParent(QWindow parent)
这是QWidget的设置父窗口函数
void setParent(QWidgetparent)
windowHandle()函数返回QWidget的QWindow窗口对象所以我们用这个做一个转换,如下:
QWindow* objs = (QWindow*)(m_engine->rootObjects().first());
QWidget m_playeWidget = new PlayWidget(nullptr);
m_playeWidget->windowHandle()->setParent(objs); //同样是设置父窗口
2.通过上面的设置后,QWidget就成为了QWindow的一个子窗口了,期间遇到一个问题就是QWidget播放视频的时候,它之上的工具栏(播放 暂停那些)无法透明。经过百度找到一种方式,就是把窗口属性设置为Tool属性就可以透明了。
setWindowFlags(Qt::FramelessWindowHint | Qt::Tool);