我想使用Qt的QWindow::fromWinID
函数将小部件绘制到外部窗口上(希望这样可行)。
不幸的是,我需要绘制一个具有特定名称/类的窗口(我可以使用xwininfo和xprop来显示它)。我能找到的唯一代码就是在xwininfo和xprop的源代码中,但它似乎是一堆不必要的代码来做一件简单的事情:找到一个属性等于某个字符串的窗口,并返回它的窗口ID供Qt使用。不幸的是,我非常精通XCB,并且不知道如何开始。
如果没有200行代码,我怎么能这样做?
答案 0 :(得分:1)
我能找到的唯一代码是xwininfo和xprop
的源代码
与xdotool一起,这真的是一个很好的资源。
找到具有某个属性等于某个字符串的窗口
是的,但没有X11内置功能可以做到这一点,这就是为什么这些工具会这样做的原因。然后有一些事情要考虑重新定位和非重新定位的窗口管理器,即是否需要进入客户端窗口等等。
我担心没有更简单的方法。低级X编程,无论是Xlib还是XCB,都会带来一些冗长。
您可以考虑的一件事是使用从xdotool
中提取(并由libxdo
提取的库,称为xdo_search_windows
。它将在gcc -lxdo test.c
中为您提供此功能。尽管如此,该库使用(并因此拉入)Xlib而不是XCB。
以下是您可以使用#include <xdo.h>
int main() {
xdo_t *xdo = xdo_new(NULL);
xdo_enter_text_window(xdo, CURRENTWINDOW, "A", 0);
return 0;
}
编译的示例程序:
Dictionary<string, int> d = new Dictionary<string, int>();
d.Add("John", 2);
d.Add("Good", 3);
d.Add("Person", 7);