Qt Can';t使用XReparentWindow将OpenGL窗口嵌入QWidget

Qt Can';t使用XReparentWindow将OpenGL窗口嵌入QWidget,qt,opengl,x11,Qt,Opengl,X11,我正在尝试为基于OpenGL的Qt程序添加更好的UI。因为我可以修改这个程序,所以获取窗口ID并不困难。所以我认为将它嵌入QWidget是个好主意。但是,它并不像我预期的那样工作: 调用XReparentWindow后,OpenGL窗口将失去装饰,但位置没有改变 如果我使用XConfigureWindow将其移动到相对于父对象的位置(0,0),它会移动到屏幕的左上角,但不会移动到QWidget 重新绘制后,第三个窗口可以覆盖QWidget,但没有任何窗口可以覆盖OpenGL窗口 X11在整个操作

我正在尝试为基于OpenGL的Qt程序添加更好的UI。因为我可以修改这个程序,所以获取窗口ID并不困难。所以我认为将它嵌入QWidget是个好主意。但是,它并不像我预期的那样工作:

调用
XReparentWindow
后,OpenGL窗口将失去装饰,但位置没有改变

如果我使用
XConfigureWindow
将其移动到相对于父对象的位置
(0,0)
,它会移动到屏幕的左上角,但不会移动到QWidget

重新绘制后,第三个窗口可以覆盖QWidget,但没有任何窗口可以覆盖OpenGL窗口

X11在整个操作过程中未报告任何错误


OpenGL窗口的父窗口似乎被设置为根窗口,而不是我的QWidget。我应该怎么做才能使它正常工作?

您可以用QGLWidget替换当前的OpenGL窗口,QGLWidget提供OpenGL上下文,并可以直接放置到Qt窗口中


我不确定Qt是否支持
XReparentWindow
这样的调用。医生似乎没有说它有,所以使用它可能是个坏主意。您可以试试
QWidget::create()

谢谢。这正是我要找的。我甚至不知道有一个
create()
方法。