Не удается встроить окно OpenGL в QWidget с помощью XReparentWindow - PullRequest
0 голосов
/ 22 октября 2011

Я пытаюсь добавить лучший интерфейс для программы на основе OpenGL с Qt. Так как я могу изменить эту программу, нетрудно получить идентификатор окна. Поэтому я думаю, что встраивание его в QWidget было бы хорошей идеей. Однако это не работает так, как я ожидал:

После вызова XReparentWindow окно OpenGL теряет оформление, но позиция не изменилась.

Если я использую XConfigureWindow, чтобы переместить его в положение (0, 0) относительно родителя, он переходит в верхний левый угол экрана, но не в QWidget.

После переопределения третье окно может покрывать QWidget, но ничто не может покрывать окно OpenGL.

X11 не сообщал об ошибках в течение всей операции.

Кажется, родительский элемент окна OpenGL был установлен в корневое окно вместо моего QWidget. Что я должен сделать, чтобы это работало правильно?

1 Ответ

1 голос
/ 22 октября 2011

Вы можете заменить ваше текущее окно OpenGL на QGLWidget, который предоставляет контекст OpenGL и может быть непосредственно помещен в окно Qt.

Я не уверен, что Qt поддерживает XReparentWindow вызовы, подобные этому.Документы, кажется, не говорят, что это так, поэтому, вероятно, это плохая идея, чтобы использовать его.Вместо этого вы можете попробовать QWidget::create().

...