我希望能够使用 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 内部原子来更改窗口属性。
我想知道我做错了什么。
谢谢你。
问题是我在窗口显示之前使用了这些函数。
Display *display = QX11Info::display();
int window = QWidget::winId ();
XMoveResizeWindow(display, window, 100, 100, 400, 400);
如果在
show()
之后使用,则有效。