Qtアプリケーションがあります。XCreateWindow 関数を呼び出してこのアプリケーションに作成された GL ウィンドウを編集できません。Qt アプリケーション内の QWidget に Xwindow を配置する必要があります。
ドキュメントでは:
void QWidget::create ( WId window = 0, bool initializeWindow = true,
bool destroyOldWindow = true ) [protected]
ウィンドウが 0 の場合は新しいウィジェット ウィンドウを作成し、それ以外の場合はウィジェットのウィンドウをウィンドウに設定します。initializeWindow が false の場合、初期化は実行されません。このパラメーターは、window が有効なウィンドウである場合にのみ意味があります。
...
関数 QWidget::create の結果を確認するために、次のコードがあります。
class ParentWindow : public QWidget
{
Q_OBJECT
public:
ParentWindow(WId id)
{
create(id);
}
};
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QPushButton* button = new QPushButton("MEGA BUTTON");
button->show();
ParentWindow w(button->winId());
w.show();
return a.exec();
}
アプリケーションを起動すると、空白のウィンドウが 1 つ表示されます。ボタンを含む(またはボタンになる)ウィンドウが予想されますが。QWidget に X11 ウィンドウを配置するにはどうすればよいですか?