在Qt中使用Xlib

时间:2014-04-29 08:17:46

标签: qt xlib

我希望能够使用Xlib功能修改Qt窗口的属性。

我尝试使用QX11Info来获取显示,并尝试使用QWidget :: winId获取窗口。

Display *display  = QX11Info::display();
int window = QWidget::winId ();

XMoveResizeWindow(display, window, 100, 100, 400, 400);

但它没有用。 我想也许窗口QWidget::winId ()返回的不是应用程序的主要窗口。所以我试着修改它的父母,看看它是不是正确的窗口。

Display *display  = QX11Info::display();
int window = QWidget::winId ();

unsigned int nbChildren;
Window root,parent,*children;
XQueryTree(display, window, &root, &parent, &children, &nbChildren);

XMoveResizeWindow(display, parent, 100, 100, 400, 400);

但它也没有用。 我也尝试了XStoreName(display, window, "test Qt");这两个例子。问题可能是窗户不能抵抗。

我知道我应该直接使用Qt做这类事情,但我正在尝试轻松的功能,看看我是否能获得正确的窗口ID。我的目标是使用海关xlib实习生原子来改变窗口属性。

我想知道我做错了什么。

谢谢。

1 个答案:

答案 0 :(得分:1)

我发现了我的错误。 问题是我在显示窗口之前使用了这些功能。

Display *display  = QX11Info::display();
int window = QWidget::winId ();

XMoveResizeWindow(display, window, 100, 100, 400, 400);

如果在" show()"。

之后使用它,则此方法有效

很抱歉。