在 QML 中截取特定项目的屏幕截图的方法是什么?

2024-02-04

我知道如何在 QML 中截取整个窗口的屏幕截图 https://stackoverflow.com/questions/33165733/qquickwindowgrabwindow-scene-graph-already-in-use?lq=1.

我有一个VideoQML 窗口中的元素。该视频显示在Rectangle.

截图的方式是什么that Rectangle而不是整个窗口?


这是一个非常有趣的问题。作为一个快速有效的解决方案,我可以建议您使用grabToImage http://doc.qt.io/qt-5/qml-qtquick-item.html#grabToImage-method的方法Item http://doc.qt.io/qt-5/qml-qtquick-item.html。它采用第一个参数作为回调函数,第二个参数作为要保存的路径。

我写了一个小函数来抓取任何Item:

// what -- name of item needed to be grabbed
// where -- string
function render(what, where) {
    // Find existent item with given name `what`
    var i = 0
    var found = false
    for (i = 0; i < window.contentItem.children.length; i++) {
        if (window.contentItem.children[i].objectName === what) {
            // We found respective item
            found = true
            break
        }
    }
    if (found) {
        console.log("We found item " + what + ". Grabbing it to " + where)
        var item = window.contentItem.children[i]
        // Grab image and save it (via callback f-ion)
        item.grabToImage( function(result) { result.saveToFile(where) })
    } else {
        console.warn("No item called " + what)
    }
}

所以你可以在 QML/QtQuick 端使用它,就像在 Qt 上一样(使用QMetaObject::invokeMethod http://doc.qt.io/qt-4.8/qmetaobject.html#invokeMethod).


还有QQuickItem::grabToImage http://doc.qt.io/qt-5/qquickitem.html#grabToImage方法,但我很高兴看到任何适当的用法示例。


另一种抓取方式是使用ShaderEffectSource http://doc.qt.io/qt-5/qml-qtquick-shadereffectsource.html并按您的意愿使用。


我上面写的所有内容都是作为一个项目准备的,位于github https://github.com/troyane/StackOverflow-pro/tree/master/grab_qml_item。代码已注释,因此希望一切都会清楚。你可以拿它来做一些黑客活动。也欢迎拉请求。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 QML 中截取特定项目的屏幕截图的方法是什么? 的相关文章

  • setContextProperty 和对象的 setProperty 之间的区别

    我现在真的很困惑 有什么区别 QQmlApplicationEngine engine engine rootContext setContextProperty myObject userData and object gt setPro
  • MAC 上的 QT/C++ - 未设置应用程序图标

    我正在努力解决的奇怪问题 在与我的 pro QT 项目文件相同的文件夹中 我有一个 Resources myIcon png 我试图将其设置为我构建的应用程序的图标 在 OSX 上运行 我阅读了文档 它建议在 pro 文件中添加 ICON
  • 仅将非模态 QDialog 窗口放置在我的应用程序顶部,而不是所有应用程序顶部

    我有一个 QDialog 窗口 它应该始终位于我的应用程序顶部 它不是模态的 用户可以随时与对话框和主应用程序进行交互 使用窗口保持在顶部提示在某种程度上实现了这一点 但是 该对话框仍然位于所有其他正在运行的应用程序 例如记事本 chrom
  • QGraphicsView 和 eventFilter

    这个问题已经困扰我两天多了 所以我想我应该问一下 我在Win7上使用Qt 4 5 3 用VC2008编译 我有 MyGraphicsView 继承 QGraphicsView 和 MyFilter 继承 QObject 类 当我将 MyFi
  • 如何在 C++ 运行时更改 QML 对象的属性?

    我想在运行时更改 QML 对象的文本 我尝试如下 但文本仍然为空 这是后端类 class BackEnd public QObject Q OBJECT Q PROPERTY QString userFieldText READ userF
  • 程序意外完成 - QT Creator

    我正在尝试使用 QT Creator 使用 QT 框架开发 GUI 控制台应用程序 我使用的是Windows XP 我安装了QT 4 8 3和mingw 两者均已安装 没有任何错误 然后我安装了QT Creator QT 版本 路径中的 Q
  • 如何在按下托盘图标菜单操作时执行功能?

    int main int argc char argv QApplication oApp argc argv QAction action1 QMenu menu QSystemTrayIcon TrayIcon QIcon favico
  • QDesktopServices::openUrl 在资源管理器中选择指定文件

    在大多数编码程序中 您可以右键单击该项目 然后单击 在资源管理器中显示 它会在资源管理器中显示选定项目的文件 在 Qt 中使用 QDesktopServices 如何做到这一点 或在 QT 中执行此操作的任何方式 您可以使用此方法在 Win
  • QtCreator 调试暂停停在代码而不是汇编处

    如何配置 QtCreator 以便在调试并按下暂停时它会显示当前正在处理的代码 现在显示汇编 无法在任何地方找到有关此问题的答案 我使用的是 Windows 7 我在 Ubuntu 16 04 中使用 Qt Creator 4 2 2 时遇
  • Qt 创建者 + MITK (Linux)

    我正在尝试使用MITK 与 Qt Creator 我已经通过 ccmake 成功编译并使用了 VTK 和 ITK 我已经编译了 MITK超级建造模式 它下载 CTK VTK ITK 等 然后我就配置好了 我已经用 make 编译了 大约两个
  • GoQt 致命错误:QAbstractAnimation:没有这样的文件或目录

    我尝试编译 Qt 来开发桌面应用程序 我按照 Qt 网站上的官方 wiki 指南的说明进行操作 当我尝试go run示例文件夹中的示例 我收到错误 去运行 home pinkya rabbit workspace go1programs s
  • 如何在模型更改时停止ListView“跳跃”

    我需要做什么 我需要创建一个聊天窗口用一个ListView在 QML 中存储聊天消息 我设置listView positionViewAtEnd 以便跟踪最后的消息 我禁用positionViewAtEnd当我向上滚动时 我可以阅读过去的消
  • 如何在带有预编译头的项目中使用google protobuf

    我有一个包含多个项目的解决方案 我的项目 但不是全部 使用预编译头 我决定使用 protobuf 但遇到了一个问题 在 protoc exe 从 proto 生成 pb h 后 我尝试包含标头并收到错误 预编译标头未包含在 pb h 中 我
  • 向 Qt 样式表添加特异性时丢失样式

    这是我的代码 const QString STYLE SHEET background color rgba x x x y border 1px solid gray border radius 0px border top 1px so
  • Qt 文件对话框默认后缀不起作用

    我将以下代码用于 QtQuick Dialogs 1 3 和 Qt 5 10 0 下 filedialog 的新属性 我使用 Qt Creator 5 10 默认套件构建它 import QtQuick 2 10 import QtQuic
  • 为 Windows 98 编译 Qt

    我需要支持 Windows 98 Qt 文档声称这是可能的 但没有说明 Qt 4 6 的分布式二进制文件不能在 Win98 上运行 而且我采样的大多数 Qt 应用程序也不能在 Win98 上运行 对于几个确实在 98 上运行的应用程序 我询
  • 更改 Qt OpenGL 窗口示例以使用 OpenGL 3.3

    我正在尝试更改 Qt OpenGL 示例以使用更现代的 opengl 版本 330 似乎合适 所以我做了 在 main cpp 上设置版本和配置文件 设置着色器版本 更改着色器以使用统一 它现在构建没有任何错误 但我只看到一个空白窗口 我错
  • 如何获取 QTableView 的标题列表?

    我有一个QTableView我的对话框中的对象 我需要访问该表的水平标题并将它们放入QStringList object 尽管进行了大量搜索 但我在 Qt 文档中找不到如何获取此标头列表 编辑 我发现的最接近的地方是this https w
  • Qt 布局,在小部件大小更改后调整到最小大小

    基本上我有一个QGridLayout里面有一些小部件 最重要的是 2 个标签 我用它们将图像绘制到屏幕上 好吧 如果用户愿意 他可以更改传入图像的分辨率 从而强制标签调整大小 我们假设标签的初始大小是320x240 用户将 VideoMod
  • QTimer 一点也不准确?

    运行在 Windows7 64 位机器上 具有非常强大的 CPU 8 核 16 线程 我使用 QTimer 以 50Hz 触发函数调用 但我最终得到了 30Hz 函数调用本身肯定需要不到 10 毫秒才能完成 整个过程发生在一个单独的线程中

随机推荐

  • 将 select 语句包含在事务中有何意义?

    将 select 语句包含在事务中有何意义 我认为 select 语句只是从数据库中 获取 数据 它们没有机会回滚某些内容 因为您无法更改数据 那么 这是否意味着我们永远不需要在事务中放置 select 语句 我对吗 Thanks 你是对的
  • 2 个 TextView,左侧带省略号,右侧带 nowrap,单行

    第一次在这个论坛发帖 希望一切顺利 我正在为我所在城市的公共交通开发 Android 应用程序 这是我所拥有的 http s28 postimg org i8cdifwgd actual png short destination next
  • 读取嵌入双引号和逗号的 CSV 文件

    我正在尝试使用 data table 包中的 fread 函数读取脏 CSV 文件 但在字符串值中嵌入双引号和逗号时遇到问题 即引用字段中存在未转义的双引号 以下示例数据说明了我的问题 它由 3 行 行和 6 列组成 第一行包含列名称 SA
  • base64编码长度参数

    我正在解码一个 Base64 字符串 修改它 然后用 Ruby 重新编码 当我重新编码时 问题是 ruby 编码库在 60 个左右的字符后添加换行符 我怎样才能告诉它没有每行最大字符数限制 val QmFzZTY0IGlzIGEgZ2VuZ
  • 无法使用InputStream读取API读取所有字节?

    我在 java 套接字中读取图像字节时遇到问题 我的 iOS 客户端正在此处发送图像 它需要读取总字节并将其作为图像存储在服务器端 当我通过 iOS 模拟器测试时 效果非常好 因为 如果我在模拟器中测试 它会将图像发送到46 577 字节
  • PouchDb find:为什么我的索引没有被使用?

    我正在使用 PouchDb 和插件 PouchDb find 在 ionic Web 应用程序中查询本地数据库 几乎在每个用例中 当我创建索引时 我都会在查询时收到以下警告 docs warning no matching index fo
  • C# 查找相关文档片段以显示搜索结果

    在为我正在构建的网站开发搜索时 我决定采用廉价且快速的方法 使用 Microsoft Sql Server 的全文搜索引擎 而不是像 Lucene Net 这样更强大的引擎 不过 我想要的功能之一是谷歌式的相关文档片段 我很快发现确定 相关
  • WPF - 数据模板的参数?

    我有一个列表框 显示有关员工的数据 例如姓名 部门照片 徽章号码等 员工可能有不同的类型 例如经理 员工 志愿者 我有 3 个独立的数据模板 每种类型一个 所有这些模板显示的数据基本相同 但呈现方式不同 根据登录应用程序的用户 图片 徽章编
  • 如何从Scala的标准库继承Scaladoc?

    如果我理解正确的话 方法的 Scaladoc 应该自动继承它覆盖的父方法的 Scaladoc 这似乎适用于一组本地类 但在从 Scala 的标准库 可能还有任何外部依赖项 扩展时则不然 class LocalParent some docu
  • 搜索文本后去掉 Vim 的高亮显示

    在 VIM 中 使用 命令查找文本后 该文本保持突出显示状态 删除它的命令是什么 我根本不想删除突出显示功能 但一旦找到我需要的内容 我又不想拥有所有这些明亮的文本点 Thanks 输入 noh
  • SQL-根据列组合连续的日期行

    假设我有以下 SQL 结果 BegDate EndDate quanitty 1 1 2014 1 31 2014 1 2 1 2014 2 28 2014 1 3 1 2014 3 31 2014 2 4 1 2014 4 30 2014
  • AngularJS $resource GET 中的多个参数

    use strict angular module rmaServices ngResource factory rmaService resource function resource return resource RMAServer
  • 编译先前预处理的文件会更改输出

    我有一个源文件 我使用选项对其进行预处理 E and P 对于基于 vxWorks 的嵌入式平台使用 GCC 4 1 2 所有其他选项与我编译文件时相同 这些选项是 Wall march pentium nostdinc O0 fno bu
  • 在 matplotlib 中打开灯

    我有以下Python代码 import numpy as np from matplotlib import pyplot as plt plt rcParams figure figsize 12 7 n 100 m 100 X np a
  • 在 Xcode 中打开权利会阻止 Bare Bones 应用程序启动

    我在 Xcode 4 2 中创建了一个基本应用程序 非常简单的应用程序 我没有改变任何东西 按下运行 您将获得标准的基本应用程序窗口 如果我打开目标的权利并点击运行 我不会收到任何调试器错误 但窗口永远不会出现 我使用 Console ap
  • 当关联计数更改时强制更新 NSFetchedResultsController

    我有一个 NSFetchedResultsController 它在表视图中显示项目列表 包括关联实体的计数 当为此关联添加对象时 使用 addXXXObject 不会调用回调来通知我的控制器更新 如何接收对象被添加到父实体的 NSSet
  • Java Beans Binding 的状态如何?

    我发现一篇旧文章http www artima com lejava articles beans binding html http www artima com lejava articles beans binding html以及一
  • 针对单个客户端请求并行多个数据库查询

    为了完成用户的某些请求 在我的应用程序中 我从单个方法发出多个数据库查询 但它们当前正在按顺序执行 因此应用程序被阻止 直到它收到前一个查询的响应 数据 然后继续下一个查询 这不是我很喜欢的事情 我想发出并行查询 另外 在发出查询之后 我想
  • 使用 ffmpeg 在同一张图像上使用两次淡入/淡出

    我使用此命令在流开始 5 秒后淡入徽标 并在 25 秒后淡出 如下所示 ffmpeg re i test mp4 ignore loop 0 i logo gif filter complex 1 v fade in st 5 d 1 al
  • 在 QML 中截取特定项目的屏幕截图的方法是什么?

    我知道如何在 QML 中截取整个窗口的屏幕截图 https stackoverflow com questions 33165733 qquickwindowgrabwindow scene graph already in use lq