【问题标题】:Qt: Enumerating Windows on the desktop(s)Qt:枚举桌面上的 Windows
【发布时间】:2011-09-21 21:18:27
【问题描述】:

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

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

我知道如何在使用 Win32 的 Windows 上执行此操作。我可以分别研究 Mac 和 Ubuntu,但我想知道是否有抽象/统一的 Qt 方法可以帮助我?

【问题讨论】:

    标签: qt


    【解决方案1】:

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

    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++ 应用程序内部“调用”原生 Objective-C 的 Cocoa API:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-03-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-07
        • 2015-04-18
        • 1970-01-01
        相关资源
        最近更新 更多