aboutsummaryrefslogtreecommitdiffstats
path: root/examples/quick
diff options
context:
space:
mode:
authorLaszlo Agocs <laszlo.agocs@digia.com>2014-08-07 15:41:58 +0200
committerLaszlo Agocs <laszlo.agocs@digia.com>2014-08-11 13:19:47 +0200
commit549f76b521bc1fa3bc49c78733b25acb4e029370 (patch)
treeaaaa4935f8c0c110ecfebbabfad8921e6af2487e /examples/quick
parentf03892bbe9f017459d72e15943dc35ac86a681bf (diff)
Finish render() support for QQuickWidget
The enablers are already in. Now we just need to use the virtual in QQuickWidgetPrivate and test it. Task-number: QTBUG-39562 Change-Id: I1faf5a0a244ba4169fb8f9b0dae657304038b60e Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
Diffstat (limited to 'examples/quick')
-rw-r--r--examples/quick/quickwidgets/quickwidget/main.cpp32
1 files changed, 31 insertions, 1 deletions
diff --git a/examples/quick/quickwidgets/quickwidget/main.cpp b/examples/quick/quickwidgets/quickwidget/main.cpp
index 3850dde157..04c7073afe 100644
--- a/examples/quick/quickwidgets/quickwidget/main.cpp
+++ b/examples/quick/quickwidgets/quickwidget/main.cpp
@@ -50,6 +50,8 @@ public:
private slots:
void quickWidgetStatusChanged(QQuickWidget::Status);
void sceneGraphError(QQuickWindow::SceneGraphError error, const QString &message);
+ void grabToFile();
+ void renderToFile();
private:
QQuickWidget *m_quickWidget;
@@ -88,7 +90,11 @@ MainWindow::MainWindow()
setCentralWidget(centralWidget);
- QMenu *fileMenu = menuBar()->addMenu(tr("File"));
+ QMenu *fileMenu = menuBar()->addMenu(tr("&File"));
+ QAction *grabAction = fileMenu->addAction(tr("Grab to image"));
+ connect(grabAction, SIGNAL(triggered()), this, SLOT(grabToFile()));
+ QAction *renderAction = fileMenu->addAction(tr("Render to pixmap"));
+ connect(renderAction, SIGNAL(triggered()), this, SLOT(renderToFile()));
QAction *quitAction = fileMenu->addAction(tr("Quit"));
connect(quitAction, SIGNAL(triggered()), qApp, SLOT(quit()));
}
@@ -108,6 +114,30 @@ void MainWindow::sceneGraphError(QQuickWindow::SceneGraphError, const QString &m
statusBar()->showMessage(message);
}
+template<class T> void saveToFile(QWidget *parent, T *saveable)
+{
+ QString t;
+ QFileDialog fd(parent, t, QString());
+ fd.setAcceptMode(QFileDialog::AcceptSave);
+ fd.setDefaultSuffix("png");
+ fd.selectFile("test.png");
+ if (fd.exec() == QDialog::Accepted)
+ saveable->save(fd.selectedFiles().first());
+}
+
+void MainWindow::grabToFile()
+{
+ QImage image = m_quickWidget->grabFramebuffer();
+ saveToFile(this, &image);
+}
+
+void MainWindow::renderToFile()
+{
+ QPixmap pixmap(m_quickWidget->size());
+ m_quickWidget->render(&pixmap);
+ saveToFile(this, &pixmap);
+}
+
int main(int argc, char **argv)
{
QApplication app(argc, argv);