Quantcast
Channel: Jobs
Viewing all articles
Browse latest Browse all 18427

[Solved]How to take ScreenShot Qt/QML

$
0
0
QtQuick1 example [developer.nokia.com] I can’t make it work on QtQuick2 screenCapture.hpp #include <QObject>   class QString; class QQuickView;   class screenCapture : public QObject {     Q_OBJECT public:         explicit screenCapture(QQuickView *parent = 0);     public slots:     void capture(QString const &path) const;   private:     QQuickView *currentView_;     }; screenCapture.cpp #include <QPixmap> #include <QQuickView> #include <QString>   #include "screenCapture.hpp"   screenCapture::screenCapture(QQuickView *currentView) :     QObject(0), currentView_(currentView) { }   void screenCapture::capture(QString const &path) const {     QPixmap::grabWidget(currentView_).save(path); } main.cpp #include <QGuiApplication> #include <QQuickPaintedItem> #include <QQuickView> #include <QQmlContext>   #include "screenCapture.hpp"   int main(int argc, char *argv[]) {     QGuiApplication app(argc, argv);       qmlRegisterType<screenCapture>("Image", 1, 0, "ScreenCapture");     qmlRegisterType<saveAbleImage>("Image", 1, 0, "SaveAbleImage");       QQuickView view;     view.setResizeMode(QQuickView::SizeRootObjectToView);     view.setSource(QStringLiteral("/Users/Qt/program/experiment_apps_and_libs/funnyCamera/qml/funnyCamera/main.qml"));     view.show();       screenCapture screenClass(&view);     view.rootContext()->setContextProperty("screenObject", &screenClass);       return app.exec(); } main.qml import QtQuick 2.0   Rectangle{     id : root     width : 1024     height : 768           MouseArea{         anchors.fill: root           onClicked: {                       console.log("save image")             screenObject.capture("Pictures/saveTest.jpg")         }     } } error message QPixmap::grabWidget is deprecated, use QWidget::grab() instead QMetaObject::invokeMethod: No such method QQuickView::grab(QRect)

Viewing all articles
Browse latest Browse all 18427

Trending Articles