我希望能够使用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实习生原子来改变窗口属性。
我想知道我做错了什么。
谢谢。
答案 0 :(得分:1)
我发现了我的错误。 问题是我在显示窗口之前使用了这些功能。
Display *display = QX11Info::display();
int window = QWidget::winId ();
XMoveResizeWindow(display, window, 100, 100, 400, 400);
如果在" show()"。
之后使用它,则此方法有效很抱歉。