2011-10-22 29 views
0

我正在嘗試爲使用Qt的基於OpenGL的程序添加更好的UI。由於我可以修改該程序,因此獲取窗口ID並不困難。所以我認爲將它嵌入到QWidget中將是一個好主意。但是,這是行不通的像我預期:XReparentWindow被稱爲無法使用XReparentWindow將OpenGL窗口嵌入到QWidget中

後,OpenGL窗口失去它的裝飾,但位置沒有改變。

如果我使用XConfigureWindow將其移動到相對於父級的位置(0, 0),它將轉到屏幕的左上角,而不是QWidget。

重排根之後,第三個窗口可覆蓋QWidget的,但沒有什麼可以覆蓋OpenGL窗口。

X11在整個操​​作過程中沒有錯誤報告。

看來OpenGL窗口的父已被設置爲根窗口,而不是我的QWidget。我該怎麼做才能使它正常工作?

回答

1

您可以用QGLWidget替換當前的OpenGL窗口,該QGLWidget提供OpenGL上下文,並可以直接放置在Qt窗口中。

我不知道Qt支持XReparentWindow電話這樣的。該文檔似乎並沒有說明,所以使用它可能是一個糟糕的主意。您可以嘗試使用QWidget::create()

+0

謝謝。這正是我要找的。我甚至不知道有一個'create()'方法。 – hpsMouse