Qt:在桌面上枚举Windows

Jas*_*enX 4 qt

我的Qt应用程序(将在Windows,OS X和Ubuntu上运行)需要:

  1. 列出所有窗口到处
  2. 获取他们的标题文本(如果有的话)
  3. 获取应用程序的图标(如果有),如QIcon或QPixmap(例如App Icon)
  4. 获取某种关于它们的唯一ID(例如Windows上的HWND)

我知道如何使用Win32为Windows执行此操作.我可以单独研究Mac和Ubuntu,但我想知道是否有一个抽象/统一的Qt方法来帮助我?

Hos*_*ork 5

不,那些是特定于操作系统的:

http://www.qtcentre.org/threads/41730-How-to-enumerate-all-top-level-windows

至于通过已发布的API开始寻求可行的东西...这里有一些X11提示:

如何使用xlib识别顶级X11窗口?

在Mac上,构建Qt的"前瞻性"方式是反对"Cocoa"而不是"Carbon":

http://doc.qt.nokia.com/latest/developing-on-mac.html#carbon-or-cocoa

根据其他SOers,它是可访问性API(必须由用户启用,似乎)可以执行此枚举:

获取已打开的Windows可可列表

Mac/Cocoa - 使用Accessibility API获取窗口列表

然后问题就变成了C++应用程序内部如何"调用"本地Objective-C的Cocoa API:

如何混合Qt,C++和Obj-C/Cocoa

......或者你可能不会这样做.:-)