无法使用XReparentWindow将OpenGL窗口嵌入到QWidget中

时间:2011-10-22 05:20:39

标签: qt opengl x11

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

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

如果我使用XConfigureWindow将其移动到相对于父级的位置(0, 0),则会转到屏幕的左上角,而不是QWidget。

重新渲染后,第三个窗口可以覆盖QWidget,但没有任何东西可以覆盖OpenGL窗口。

X11报告整个操作过程中没有错误。

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

1 个答案:

答案 0 :(得分:1)

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

我不确定Qt会支持XReparentWindow这样的电话。文档似乎没有说它,所以使用它可能是一个坏主意。您可以尝试使用QWidget::create()