Qt:在桌面上枚举Windows

时间:2011-09-21 21:18:27

标签: qt

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

  1. 列出所有窗户
  2. 获取他们的标题文本(如果有的话)
  3. 获取应用程序的图标(如果有),如QIcon或QPixmap(例如App Icon)
  4. 获取某些关于它们的唯一ID(例如Windows上的HWND)
  5. 我知道如何使用Win32为Windows执行此操作。我可以单独研究Mac和Ubuntu,但我想知道是否有一个抽象/统一的Qt方法来帮助我?

2 个答案:

答案 0 :(得分:5)

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

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

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

How to identify top-level X11 windows using xlib?

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

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

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

Get a list of opened windows cocoa

Mac / Cocoa - Getting a list of windows using Accessibility API

然后问题就变成了C ++应用程序内部如何“调用”Cocoa API本身就是Objective-C:

How to mix Qt, C++ and Obj-C/Cocoa

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

答案 1 :(得分:0)

我建议您自己跟踪这些信息。它不是完美的(只需要一个单例类并重载根窗口类型中的setWindowTitle()调用)但与平台无关。 。