gpt4 book ai didi

qt - 如何在没有 QQuickView 的情况下截取 QML 应用程序的屏幕截图

转载 作者:行者123 更新时间:2023-12-04 12:08:31 25 4
gpt4 key购买 nike

我想抓取我的 QML 应用程序的屏幕。但是我的根 QML 对象是 ApplicationWindow ,所以我不能使用 QQuickView显示它。相反,我必须使用 QQmlApplicationEngine .
我知道如何使用 QQuickView 截屏( QQuickWindow::grabWindow ),但不知道如何使用 QQmlApplicationEngine .

我的 main文件:

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
}

//...
}

最佳答案

您可以使用 rootObjects()并将其结果转换为 QQuickWindow :

foreach(QObject* obj, engine.rootObjects()) {
QQuickWindow* window = qobject_cast<QQuickWindow*>(obj);
if (window) {
QImage image = window->grabWindow();
qDebug() << image;
}
}

关于qt - 如何在没有 QQuickView 的情况下截取 QML 应用程序的屏幕截图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21697185/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com