【问题标题】:masking QT widget while capturing the screen在捕获屏幕时屏蔽 QT 小部件
【发布时间】:2012-05-16 16:56:23
【问题描述】:

我有一个用于捕获屏幕的 Win 和 Mac 的 Qt 4.8 应用程序。

我的桌面上有一个 QT 小部件(始终在顶部),在我的捕获过程中不应捕获它。应该捕获在 QWidget 后面运行的应用程序/桌面,而不是 QT 小部件。我的 QT 应用程序的 UI 应该被屏蔽以防止捕获。

有什么办法可以做到吗?

【问题讨论】:

  • qt-project.org/doc/qt-4.8/desktop-screenshot.html - Qt 截图示例是这样做的...
  • @Mat 谢谢。首先,我没有使用 QT 进行捕获,而是使用 bitBlt (msdn.microsoft.com/en-us/library/dd183370%28v=vs.85%29.aspx)。我只使用 QT 来显示 UI。编辑:其次,在这个程序中,他们在捕获之前使用了 hide(),在捕获之后使用了 show()。实际上,这在我的代码中不起作用,因为我想始终显示它。我想知道在截屏时是否可以在 QWidget 中放置任何钩子以使其被屏蔽
  • 所以?看看它是如何在 Qt 文档中完成的,你可以将它应用到你的屏幕截图方法中。
  • 在上面的程序中,他们在捕获之前使用了hide(),在捕获之后使用了show()。实际上,这在我的代码中不起作用,因为我想始终显示它。我想知道在截屏时是否可以在 QWidget 中放置任何钩子以使其被屏蔽
  • @Mat 抱歉编辑,一些键盘问题

标签: qt capture screen-capture image-capture


【解决方案1】:

主要问题是:您是否可以控制截屏?如果您要截取屏幕截图,那将是可行的,但特定于平台。您需要获取屏幕上所有窗口的内容,除了您不想看到的窗口,并从中构建屏幕截图。

如果它是第三方屏幕抓取工具,例如 Windows 上的 Ctrl-PrtSc 或 OS-X 上的 Grab,那么除非操作系统提供一些 API 可以让您隐藏小部件,否则您将不走运。

您想要的功能并不常见,所以我怀疑是否有任何可移植的,甚至理智的方式来实现您想要的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-03
    • 2016-02-13
    • 2014-08-06
    • 1970-01-01
    • 2012-01-25
    • 2012-04-19
    相关资源
    最近更新 更多