在Qt中使用Xlib

问题描述 投票:0回答:1

我希望能够使用 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 内部原子来更改窗口属性。

我想知道我做错了什么。

谢谢你。

qt xlib
1个回答
1
投票

问题是我在窗口显示之前使用了这些函数。

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

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

如果在

show()
之后使用,则有效。

© www.soinside.com 2019 - 2024. All rights reserved.