QML关于控件截图

网友投稿 239 2022-11-28

QML关于控件截图

在写qml程序的时候,遇到了需要截图的功能,

下面来看看怎么获取控件的截图

首先,所有的可视控件其实都继承了QQuickItem这个类的

所以所有控件都有截图的功能,当然这个只能在c++里实现

首先,定义一个截图类继承public QObject,

#include

#include

要用到上面两个头文件

两个私有变量

QQuickItem      *m_grab_item;

QSharedPointer m_grab_result;

定义这样一个函数,Q_INVOKABLE void setItem(QObject *itemObj); // 保存图片

下面是它的实现,

void qjsontest::setItem(QObject *itemObj)

{

m_grab_item = qobject_cast(itemObj);//获取控件id

m_grab_result = m_grab_item->grabToImage();//获取控件图片

QQuickItemGrabResult * grabResult = m_grab_result.data();//获取数据

connect(grabResult,SIGNAL(ready()),this,SLOT(saveimage()));//这里是必须这样写的,因为调用了ready()这个准备函数,里面做了很多处理

//信号连接

}

定义一个槽函数

private slots: void saveimage();void qjsontest::saveimage(){ QImage img = m_grab_result->image();//这里转成图片 qDebug()<#include #include #include #include #include #include #include #include #include #include class qjsontest:public QObject{ Q_OBJECTpublic: qjsontest(); ~qjsontest(); Q_INVOKABLE void setItem(QObject *itemObj); // 保存图片private slots: void saveimage();private: QQuickItem *m_grab_item; QSharedPointer m_grab_result;};#endif // QJSONTEST_H

.cpp文件

#include "qjsontest.h"#include#includeqjsontest::qjsontest(){ }qjsontest::~qjsontest(){ }void qjsontest::setItem(QObject *itemObj){ m_grab_item = qobject_cast(itemObj); m_grab_result = m_grab_item->grabToImage(); QQuickItemGrabResult * grabResult = m_grab_result.data(); connect(grabResult,SIGNAL(ready()),this,SLOT(saveimage()));}void qjsontest::saveimage(){ QImage img = m_grab_result->image(); qDebug()<

qml;文件

import QtQuick 2.7import QtQuick.Controls 1.5ApplicationWindow { visible: true width: 640 height: 480 title: qsTr("Hello World")id:rootItem{ id: idItem width: 200 height: 200 x:1; y:1; clip: true;Rectangle{ width: 200 height: 200 color:"red" Button { x:5 y:5 width: 64 height: 48 text: qsTr("calc") }}} Button { x:300 y:100 width: 64 height: 48 text: qsTr("normal") onClicked: capIol_vm.setItem(idItem); }}

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:cmakelist.txt编译实例
下一篇:(第十五集——第3章)索引原理与慢查询优化
相关文章

 发表评论

暂时没有评论,来抢沙发吧~