【问题标题】:Can't embed OpenGL window into QWidget with XReparentWindow无法使用 XReparentWindow 将 OpenGL 窗口嵌入到 QWidget 中
【发布时间】:2011-10-22 05:20:38
【问题描述】:

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

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

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

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

X11在整个操​​作过程中没有报错。

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

【问题讨论】:

    标签: qt opengl x11


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢。这正是我正在寻找的。我什至不知道有一个create() 方法。
    猜你喜欢
    • 2012-04-22
    • 1970-01-01
    • 2012-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-23
    • 1970-01-01
    相关资源
    最近更新 更多