【发布时间】:2012-04-22 18:39:15
【问题描述】:
我想将两个 QWidget 嵌入到使用 XLib 创建的窗口中。我已经写了这段代码:
// Assume all the necessary headers included
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
// Create widget 1
QWidget widget1 ;
widget1.setGeometry(44,44,666,666);
widget1.show();
// Create widget 2
QWidget widget2 ;
widget2.setGeometry(144,144,666,666);
widget2.show();
Display *display = XOpenDisplay( 0 ); // 0 parameter for default values
if ( display != NULL )
{
// Create the x11 window using XLib
Window w = XCreateWindow(display, DefaultRootWindow(display),
0, 0, 1200, 1100, 0,CopyFromParent, CopyFromParent, CopyFromParent, 0, 0);
XMapWindow(display, w);
XFlush(display);
XReparentWindow(display, widget1.winId(), w, 0, 0);
XReparentWindow(display, widget2.winId(), w, 1, 10);
}
else
std::cout << "Error: Opening display" << std::endl ;
return app.exec();
}
我能够成功运行这个程序,但是这些小部件没有嵌入到我创建的 X11 窗口中。这三样东西都是被创造出来的,但都是独立的。这些小部件没有嵌入到窗口中。
【问题讨论】:
-
看看这个:QX11EmbedWidget
-
我曾经使用 QX11 容器来做同样的事情。但我需要使用专门使用 XLib 创建的窗口来执行此操作,因此存在问题。
-
@AmitTomar QX11 容器的头文件是什么?还是我必须为它下载一个插件?
-
@PrakharMohanSrivastava Qt 4.7 和 Qt 4.8 支持此类。据我所知,在 Qt 5.0 中它不存在。