Example: update imagescaling example
Updated the example to align with the Qt6 Example-Guideline. https://wiki.qt.io/Qt6/Example-Guideline Task-number: QTBUG-111165 Change-Id: Ibd9e7ce0d4dee90f6a693b81516d2f5b86345b1d Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> (cherry picked from commit b5e9d418959a9d427c14468886470791527e157f) Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
This commit is contained in:
parent
c60e8ef680
commit
29f73f0c9a
BIN
examples/qtconcurrent/imagescaling/doc/images/imagescaling.webp
Normal file
BIN
examples/qtconcurrent/imagescaling/doc/images/imagescaling.webp
Normal file
Binary file not shown.
After Width: | Height: | Size: 46 KiB |
Binary file not shown.
Before Width: | Height: | Size: 21 KiB |
@ -3,15 +3,17 @@
|
||||
|
||||
/*!
|
||||
\example imagescaling
|
||||
\title Image Scaling Example
|
||||
\brief Demonstrates how to asynchronously download and scale images.
|
||||
\meta tags {widgets, threads, network}
|
||||
\title Image Scaling
|
||||
\ingroup qtconcurrentexamples
|
||||
\image imagescaling_example.png
|
||||
\brief Demonstrates how to asynchronously download and scale images.
|
||||
|
||||
This example shows how to use the QFuture and QPromise classes to download a
|
||||
collection of images from the network and scale them, without blocking the UI.
|
||||
|
||||
The application consists of the the following steps:
|
||||
\image imagescaling.webp
|
||||
|
||||
The application consists of the following steps:
|
||||
|
||||
\list 1
|
||||
\li Download images form the list of URLs specified by the user.
|
||||
@ -148,4 +150,6 @@
|
||||
|
||||
The rest of the code is straightforward, you can check the example project for
|
||||
more details.
|
||||
|
||||
\include examples-run.qdocinc
|
||||
*/
|
||||
|
@ -4,14 +4,12 @@
|
||||
#include "downloaddialog.h"
|
||||
|
||||
#include <QNetworkReply>
|
||||
|
||||
#include <qmath.h>
|
||||
#include <QtMath>
|
||||
|
||||
#include <functional>
|
||||
|
||||
Images::Images(QWidget *parent) : QWidget(parent), downloadDialog(new DownloadDialog(this))
|
||||
{
|
||||
setWindowTitle(tr("Image downloading and scaling example"));
|
||||
resize(800, 600);
|
||||
|
||||
addUrlsButton = new QPushButton(tr("Add URLs"));
|
||||
@ -90,7 +88,7 @@ void Images::process()
|
||||
// Abort all pending requests
|
||||
abortDownload();
|
||||
})
|
||||
.onFailed([this](const std::exception& ex) {
|
||||
.onFailed([this](const std::exception &ex) {
|
||||
updateStatus(tr(ex.what()));
|
||||
});
|
||||
//! [6]
|
||||
@ -117,7 +115,7 @@ QFuture<QByteArray> Images::download(const QList<QUrl> &urls)
|
||||
//! [9]
|
||||
|
||||
//! [10]
|
||||
for (auto url : urls) {
|
||||
for (const auto &url : urls) {
|
||||
QSharedPointer<QNetworkReply> reply(qnam.get(QNetworkRequest(url)));
|
||||
replies.push_back(reply);
|
||||
//! [10]
|
||||
@ -142,10 +140,10 @@ QFuture<QByteArray> Images::download(const QList<QUrl> &urls)
|
||||
promise->finish();
|
||||
}
|
||||
//! [12]
|
||||
}).onFailed([=] (QNetworkReply::NetworkError error) {
|
||||
}).onFailed([promise] (QNetworkReply::NetworkError error) {
|
||||
promise->setException(std::make_exception_ptr(error));
|
||||
promise->finish();
|
||||
}).onFailed([=] {
|
||||
}).onFailed([promise] {
|
||||
const auto ex = std::make_exception_ptr(
|
||||
std::runtime_error("Unknown error occurred while downloading."));
|
||||
promise->setException(ex);
|
||||
@ -164,7 +162,7 @@ QList<QImage> Images::scaled() const
|
||||
{
|
||||
QList<QImage> scaled;
|
||||
const auto data = downloadFuture.results();
|
||||
for (auto imgData : data) {
|
||||
for (const auto &imgData : data) {
|
||||
QImage image;
|
||||
image.loadFromData(imgData);
|
||||
if (image.isNull())
|
||||
|
@ -1,15 +1,16 @@
|
||||
// Copyright (C) 2016 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
|
||||
#include <QtWidgets>
|
||||
#include <QtConcurrent>
|
||||
|
||||
#include "imagescaling.h"
|
||||
#include <QApplication>
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
QApplication app(argc,argv);
|
||||
app.setOrganizationName("QtProject");
|
||||
app.setApplicationName(QObject::tr("Image Downloading and Scaling"));
|
||||
|
||||
Images imageView;
|
||||
imageView.setWindowTitle(QObject::tr("Image Downloading and Scaling"));
|
||||
imageView.show();
|
||||
|
||||
return app.exec();
|
||||
|
Loading…
x
Reference in New Issue
Block a user