在桌面使用grabWindow()截屏有两种方式:
1.grabWindow()处理后使用,也就是给它个window句柄继续使用。当然今天我们这里不讲它。我们讲下一种方法。
My main file:
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
ApplicationData appData;
QQmlApplicationEngine engine;
engine.load(QUrl("qrc:///main.qml"));
return app.exec();
}
main.qml :
import QtQuick 2.1
import QtQuick.Controls 1.1
import QtQuick.Window 2.1
ApplicationWindow {
id: mainWindow
width: appData.screenWidth
height: appData.screenHeight
visible: true
Rectangle {
id: mainWindowBackground
color: "red"
anchors.fill: parent
}
...
}
foreach(QObject* obj, engine.rootObjects()) {
QQuickWindow* window = qobject_cast<QQuickWindow*>(obj);
if (window) {
QImage image = window->grabWindow();
qDebug() << image;
}
}
2.qml下grabToImage()截图。
其实在保存图片方面,qml也给了我们很多种方法了,我们来讲下其中的grabToImage()方法。它是属于Item的,所以可以使用的地方还是很多的。不废话了,方法如下:
Item{
id:root
。。。。。
}
然后在js代码里:
onReleased:{
root.grabToImage(function(result) {
result.saveToFile("E:/saveScreen.png");
});
}
1.grabWindow()处理后使用,也就是给它个window句柄继续使用。当然今天我们这里不讲它。我们讲下一种方法。
My main file:
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
ApplicationData appData;
QQmlApplicationEngine engine;
engine.load(QUrl("qrc:///main.qml"));
return app.exec();
}
main.qml :
import QtQuick 2.1
import QtQuick.Controls 1.1
import QtQuick.Window 2.1
ApplicationWindow {
id: mainWindow
width: appData.screenWidth
height: appData.screenHeight
visible: true
Rectangle {
id: mainWindowBackground
color: "red"
anchors.fill: parent
}
...
}
foreach(QObject* obj, engine.rootObjects()) {
QQuickWindow* window = qobject_cast<QQuickWindow*>(obj);
if (window) {
QImage image = window->grabWindow();
qDebug() << image;
}
}
2.qml下grabToImage()截图。
其实在保存图片方面,qml也给了我们很多种方法了,我们来讲下其中的grabToImage()方法。它是属于Item的,所以可以使用的地方还是很多的。不废话了,方法如下:
Item{
id:root
。。。。。
}
然后在js代码里:
onReleased:{
root.grabToImage(function(result) {
result.saveToFile("E:/saveScreen.png");
});
}