From 549f76b521bc1fa3bc49c78733b25acb4e029370 Mon Sep 17 00:00:00 2001 From: Laszlo Agocs Date: Thu, 7 Aug 2014 15:41:58 +0200 Subject: 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 --- examples/quick/quickwidgets/quickwidget/main.cpp | 32 +++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) (limited to 'examples/quick') 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 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); -- cgit v1.2.3