From e1a303dd01f2e7faa3ec54386ecbbfe113996790 Mon Sep 17 00:00:00 2001 From: Laszlo Agocs Date: Tue, 20 Sep 2016 12:53:31 +0200 Subject: Enhance quickwidget example with all grabbing cases Add a demo of QQuickItem::grabToImage(), in addition to grabFramebuffer() and render(). This way all possible approaches are demonstrated and tested. Task-number: QTBUG-55879 Change-Id: I13c427730c416f0d87f83092627e2cb46aba2cc4 Reviewed-by: Shawn Rutledge Reviewed-by: Andy Nichols --- examples/quick/quickwidgets/quickwidget/main.cpp | 30 ++++++++++++++++------ .../quickwidgets/quickwidget/rotatingsquare.qml | 6 +++++ 2 files changed, 28 insertions(+), 8 deletions(-) (limited to 'examples') diff --git a/examples/quick/quickwidgets/quickwidget/main.cpp b/examples/quick/quickwidgets/quickwidget/main.cpp index 65258d958e..3f3638a43f 100644 --- a/examples/quick/quickwidgets/quickwidget/main.cpp +++ b/examples/quick/quickwidgets/quickwidget/main.cpp @@ -39,6 +39,7 @@ ****************************************************************************/ #include +#include #include #include @@ -50,8 +51,9 @@ public: private slots: void quickWidgetStatusChanged(QQuickWidget::Status); void sceneGraphError(QQuickWindow::SceneGraphError error, const QString &message); - void grabToFile(); - void renderToFile(); + void grabFramebuffer(); + void renderToPixmap(); + void grabToImage(); private: QQuickWidget *m_quickWidget; @@ -91,8 +93,9 @@ MainWindow::MainWindow() setCentralWidget(centralWidget); QMenu *fileMenu = menuBar()->addMenu(tr("&File")); - fileMenu->addAction(tr("Grab to imFage"), this, &MainWindow::grabToFile); - fileMenu->addAction(tr("Render to pixmap"), this, &MainWindow::renderToFile); + fileMenu->addAction(tr("Grab framebuffer"), this, &MainWindow::grabFramebuffer); + fileMenu->addAction(tr("Render to pixmap"), this, &MainWindow::renderToPixmap); + fileMenu->addAction(tr("Grab via grabToImage"), this, &MainWindow::grabToImage); fileMenu->addAction(tr("Quit"), qApp, &QCoreApplication::quit); } @@ -113,8 +116,7 @@ void MainWindow::sceneGraphError(QQuickWindow::SceneGraphError, const QString &m template void saveToFile(QWidget *parent, T *saveable) { - QString t; - QFileDialog fd(parent, t, QString()); + QFileDialog fd(parent); fd.setAcceptMode(QFileDialog::AcceptSave); fd.setDefaultSuffix("png"); fd.selectFile("test.png"); @@ -122,19 +124,31 @@ template void saveToFile(QWidget *parent, T *saveable) saveable->save(fd.selectedFiles().first()); } -void MainWindow::grabToFile() +void MainWindow::grabFramebuffer() { QImage image = m_quickWidget->grabFramebuffer(); saveToFile(this, &image); } -void MainWindow::renderToFile() +void MainWindow::renderToPixmap() { QPixmap pixmap(m_quickWidget->size()); m_quickWidget->render(&pixmap); saveToFile(this, &pixmap); } +void MainWindow::grabToImage() +{ + QFileDialog fd(this); + fd.setAcceptMode(QFileDialog::AcceptSave); + fd.setDefaultSuffix("png"); + fd.selectFile("test_grabToImage.png"); + if (fd.exec() == QDialog::Accepted) { + QMetaObject::invokeMethod(m_quickWidget->rootObject(), "performLayerBasedGrab", + Q_ARG(QVariant, fd.selectedFiles().first())); + } +} + int main(int argc, char **argv) { QApplication app(argc, argv); diff --git a/examples/quick/quickwidgets/quickwidget/rotatingsquare.qml b/examples/quick/quickwidgets/quickwidget/rotatingsquare.qml index 0c25eddf88..03b1114d20 100644 --- a/examples/quick/quickwidgets/quickwidget/rotatingsquare.qml +++ b/examples/quick/quickwidgets/quickwidget/rotatingsquare.qml @@ -57,4 +57,10 @@ Rectangle { anchors.centerIn: parent text: "Qt Quick running in a widget" } + + function performLayerBasedGrab(fn) { + root.grabToImage(function(result) { + result.saveToFile(fn); + }); + } } -- cgit v1.2.3 From 4ee2bc4e9c05d8daec8b04412a0b7c0264fbc1a4 Mon Sep 17 00:00:00 2001 From: Lars Knoll Date: Mon, 15 Aug 2016 10:35:53 +0200 Subject: Turn the no-network support into a configurable feature Change-Id: Ic70f60c124fe166b37fbe9b853735be3c5e0d46d Reviewed-by: Oswald Buddenhagen Reviewed-by: Simon Hausmann --- examples/qml/qml.pro | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'examples') diff --git a/examples/qml/qml.pro b/examples/qml/qml.pro index 4ed935f92f..df73fe0200 100644 --- a/examples/qml/qml.pro +++ b/examples/qml/qml.pro @@ -1,12 +1,13 @@ TEMPLATE = subdirs +QT_FOR_CONFIG += qml qtHaveModule(quick) { SUBDIRS += \ qmlextensionplugins \ xmlhttprequest - !no_network: SUBDIRS += \ - networkaccessmanagerfactory + qtConfig(qml-network): \ + SUBDIRS += networkaccessmanagerfactory } SUBDIRS += \ -- cgit v1.2.3 From e27fa6e2b5376e68926bd5bdf70cdb0feba6e09e Mon Sep 17 00:00:00 2001 From: Laszlo Agocs Date: Tue, 11 Oct 2016 13:23:05 +0200 Subject: Use d3d12 feature in rendernode example Migrate the example away from config_d3d12 and make the feature public. Task-number: QTBUG-56327 Change-Id: I88809b8c41282cd75952d085cfd539a5d80f3f38 Reviewed-by: Lars Knoll --- examples/quick/scenegraph/rendernode/customrenderitem.cpp | 2 +- examples/quick/scenegraph/rendernode/d3d12renderer.cpp | 4 ++-- examples/quick/scenegraph/rendernode/d3d12renderer.h | 4 ++-- examples/quick/scenegraph/rendernode/rendernode.pro | 3 +-- 4 files changed, 6 insertions(+), 7 deletions(-) (limited to 'examples') diff --git a/examples/quick/scenegraph/rendernode/customrenderitem.cpp b/examples/quick/scenegraph/rendernode/customrenderitem.cpp index 2465f4cbc7..a92a400922 100644 --- a/examples/quick/scenegraph/rendernode/customrenderitem.cpp +++ b/examples/quick/scenegraph/rendernode/customrenderitem.cpp @@ -67,7 +67,7 @@ QSGNode *CustomRenderItem::updatePaintNode(QSGNode *node, UpdatePaintNodeData *) break; #endif case QSGRendererInterface::Direct3D12: -#ifdef HAS_D3D12 +#if QT_CONFIG(d3d12) n = new D3D12RenderNode(this); break; #endif diff --git a/examples/quick/scenegraph/rendernode/d3d12renderer.cpp b/examples/quick/scenegraph/rendernode/d3d12renderer.cpp index d35f82a76a..3b377f1cb1 100644 --- a/examples/quick/scenegraph/rendernode/d3d12renderer.cpp +++ b/examples/quick/scenegraph/rendernode/d3d12renderer.cpp @@ -43,7 +43,7 @@ #include #include -#ifdef HAS_D3D12 +#if QT_CONFIG(d3d12) #include "vs_shader.hlslh" #include "ps_shader.hlslh" @@ -280,4 +280,4 @@ QRectF D3D12RenderNode::rect() const return QRect(0, 0, m_item->width(), m_item->height()); } -#endif // HAS_D3D12 +#endif // d3d12 diff --git a/examples/quick/scenegraph/rendernode/d3d12renderer.h b/examples/quick/scenegraph/rendernode/d3d12renderer.h index f13a1d451c..1d2726819f 100644 --- a/examples/quick/scenegraph/rendernode/d3d12renderer.h +++ b/examples/quick/scenegraph/rendernode/d3d12renderer.h @@ -43,7 +43,7 @@ #include -#ifdef HAS_D3D12 +#if QT_CONFIG(d3d12) class QQuickItem; @@ -77,6 +77,6 @@ private: quint8 *cbPtr = nullptr; }; -#endif // HAS_D3D12 +#endif // d3d12 #endif diff --git a/examples/quick/scenegraph/rendernode/rendernode.pro b/examples/quick/scenegraph/rendernode/rendernode.pro index 851d5927bd..968902a5be 100644 --- a/examples/quick/scenegraph/rendernode/rendernode.pro +++ b/examples/quick/scenegraph/rendernode/rendernode.pro @@ -18,8 +18,7 @@ OTHER_FILES += \ main.qml \ shader.hlsl -config_d3d12 { - DEFINES += HAS_D3D12 +qtConfig(d3d12) { HEADERS += d3d12renderer.h SOURCES += d3d12renderer.cpp LIBS += -ld3d12 -- cgit v1.2.3 From f720242419cd73529277173e43e9f7a8ed367ad3 Mon Sep 17 00:00:00 2001 From: Venugopal Shivashankar Date: Fri, 7 Oct 2016 15:20:26 +0200 Subject: Example: Use TextInput's displayText property instead of length The replace Text item that is overlayed on the TextInput, behaves like the TextField.placeholderText property. The opacity of the item varies based on whether the TextInput has any text or not. Using the length property to adjust the opacity fails on platforms such as Android where the length is not updated until the text is committed (i.e. until you hit the [ENTER] key). Whereas the displayText property is updated when you key in text, so it is ideal to use the length of the displayText than the length property itself. Change-Id: I678e5db5e5d5027e4aae816b6620095c68138eb7 Reviewed-by: Shawn Rutledge --- examples/quick/demos/tweetsearch/content/LineInput.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'examples') diff --git a/examples/quick/demos/tweetsearch/content/LineInput.qml b/examples/quick/demos/tweetsearch/content/LineInput.qml index 7e4ffda92b..46bc73f3af 100644 --- a/examples/quick/demos/tweetsearch/content/LineInput.qml +++ b/examples/quick/demos/tweetsearch/content/LineInput.qml @@ -62,7 +62,7 @@ FocusScope { text: "Enter word" font.pixelSize: 18 color: "#707070" - opacity: input.length ? 0 : 1 + opacity: input.displayText.length ? 0 : 1 } Text { -- cgit v1.2.3