Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
src_concurrent_qtconcurrentfilter.cpp
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
3
5bool function(const T &t);
7
8
10bool allLowerCase(const QString &string)
11{
12 return string.lowered() == string;
13}
14
18
19
24
25
27V function(T &result, const U &intermediate)
29
30
31
32void addToDictionary(QSet<QString> &dictionary, const QString &string)
33{
34 dictionary.insert(string);
35}
36
38QFuture<QSet<QString>> dictionary = QtConcurrent::filteredReduced(strings, allLowerCase, addToDictionary);
40
41
44QFuture<QString> lowerCaseStrings = QtConcurrent::filtered(strings.constBegin(), strings.constEnd(), allLowerCase);
45
46// filter in-place only works on non-const iterators
47QFuture<void> future = QtConcurrent::filter(strings.begin(), strings.end(), allLowerCase);
48
49QFuture<QSet<QString>> dictionary = QtConcurrent::filteredReduced(strings.constBegin(), strings.constEnd(), allLowerCase, addToDictionary);
51
52
55
56// each call blocks until the entire operation is finished
58
59
61
64
65
67// keep only images with an alpha channel
68QList<QImage> images = ...;
70
71// retrieve gray scale images
72QList<QImage> images = ...;
74
75// create a set of all printable characters
76QList<QChar> characters = ...;
77QFuture<QSet<QChar>> set = QtConcurrent::filteredReduced(characters, qOverload<>(&QChar::isPrint),
78 qOverload<const QChar&>(&QSet<QChar>::insert));
80
81
83// can mix normal functions and member functions with QtConcurrent::filteredReduced()
84
85// create a dictionary of all lower cased strings
86extern bool allLowerCase(const QString &string);
89 qOverload<const QString&>(&QSet<QString>::insert));
90
91// create a collage of all gray scale images
92extern void addToCollage(QImage &collage, const QImage &grayscaleImage);
93QList<QImage> images = ...;
96
97
99bool QString::contains(const QRegularExpression &regexp) const;
101
102
104QStringList strings = ...;
105QFuture<QString> future = QtConcurrent::filtered(list, [](const QString &str) {
106 return str.contains(QRegularExpression("^\\S+$")); // matches strings without whitespace
107});
109
112{
113 StartsWith(const QString &string)
114 : m_string(string) { }
115
116 bool operator()(const QString &testString)
117 {
118 return testString.startsWith(m_string);
119 }
120
122};
123
124QList<QString> strings = ...;
127
130{
132};
133
134QFuture<QString> fooString =
137
139// keep only even integers
140QList<int> list { 1, 2, 3, 4 };
141QtConcurrent::blockingFilter(list, [](int n) { return (n & 1) == 0; });
142
143// retrieve only even integers
144QList<int> list2 { 1, 2, 3, 4 };
145QFuture<int> future = QtConcurrent::filtered(list2, [](int x) {
146 return (x & 1) == 0;
147});
148QList<int> results = future.results();
149
150// add up all even integers
151QList<int> list3 { 1, 2, 3, 4 };
153 [](int x) {
154 return (x & 1) == 0;
155 },
156 [](int &sum, int x) {
157 sum += x;
158 }
159);
161
163void intSumReduce(int &sum, int x)
164{
165 sum += x;
166}
167
168QList<int> list { 1, 2, 3, 4 };
170 [] (int x) {
171 return (x & 1) == 0;
172 },
174);
176
179{
180 return (x & 1) == 0;
181}
182
183QList<int> list { 1, 2, 3, 4 };
186 [](int &sum, int x) {
187 sum += x;
188 }
189);
QList< T > results() const
Definition qfuture.h:114
\inmodule QtGui
Definition qimage.h:37
bool hasAlphaChannel() const
Returns true if the image has a format that respects the alpha channel, otherwise returns false.
Definition qimage.cpp:4589
bool isGrayscale() const
For 32-bit images, this function is equivalent to allGray().
Definition qimage.cpp:2948
\inmodule QtCore \reentrant
Definition qset.h:18
\inmodule QtCore
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:129
bool contains(QChar c, Qt::CaseSensitivity cs=Qt::CaseSensitive) const
Definition qstring.h:1369
QString str
[2]
QFuture< typename std::decay_t< Sequence >::value_type > filtered(QThreadPool *pool, Sequence &&sequence, KeepFunctor &&keep)
Calls filterFunction once for each item in sequence and returns a new Sequence of kept items.
QFuture< ResultType > filteredReduced(QThreadPool *pool, Sequence &&sequence, KeepFunctor &&keep, ReduceFunctor &&reduce, ReduceOptions options=ReduceOptions(UnorderedReduce|SequentialReduce))
void blockingFilter(QThreadPool *pool, Sequence &sequence, KeepFunctor &&keep)
Calls filterFunction once for each item in sequence.
QFuture< void > filter(QThreadPool *pool, Sequence &sequence, KeepFunctor &&keep)
Calls filterFunction once for each item in sequence.
ResultType blockingFilteredReduced(QThreadPool *pool, Sequence &&sequence, KeepFunctor &&keep, ReduceFunctor &&reduce, ReduceOptions options=ReduceOptions(UnorderedReduce|SequentialReduce))
std::decay_t< Sequence > blockingFiltered(QThreadPool *pool, Sequence &&sequence, KeepFunctor &&keep)
Calls filterFunction once for each item in sequence and returns a new Sequence of kept items.
DBusConnection const char DBusError DBusBusType DBusError return DBusConnection DBusHandleMessageFunction void DBusFreeFunction return DBusConnection return DBusConnection return const char DBusError return DBusConnection DBusMessage dbus_uint32_t return DBusConnection dbus_bool_t DBusConnection DBusAddWatchFunction DBusRemoveWatchFunction DBusWatchToggledFunction void DBusFreeFunction return DBusConnection DBusDispatchStatusFunction void DBusFreeFunction DBusTimeout return DBusTimeout return DBusWatch return DBusWatch unsigned int return DBusError const DBusError return const DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessageIter int const void return DBusMessageIter DBusMessageIter return DBusMessageIter void DBusMessageIter void int return DBusMessage DBusMessageIter return DBusMessageIter return DBusMessageIter DBusMessageIter const char const char const char const char return DBusMessage return DBusMessage const char return DBusMessage dbus_bool_t return DBusMessage dbus_uint32_t return DBusMessage void
DBusConnection const char DBusError DBusBusType DBusError return DBusConnection DBusHandleMessageFunction function
EGLOutputLayerEXT EGLint EGLAttrib value
[5]
GLint GLint GLint GLint GLint x
[0]
GLsizei const GLchar ** strings
[1]
GLfloat n
GLdouble GLdouble t
Definition qopenglext.h:243
GLuint64EXT * result
[6]
GLsizei const GLchar *const * string
[0]
Definition qopenglext.h:694
QLatin1StringView QLatin1String
Definition qstringfwd.h:31
bool keepEvenIntegers(int x)
[16]
QList< QImage > images
[6]
QFuture< QString > fooString
QFuture< QImage > collage
[15]
QList< int > list
[14]
QFuture< QImage > grayscaleImages
void addToCollage(QImage &collage, const QImage &grayscaleImage)
QFuture< QString > lowerCaseStrings
QFuture< QSet< QString > > lowerCase
bool allLowerCase(const QString &string)
[0]
void intSumReduce(int &sum, int x)
[15]
QFuture< QSet< QString > > dictionary
QFuture< void > alphaImages
QFuture< void > future
[5]
QFuture< QSet< QChar > > set
[10]
QList< QChar > characters
V const QString & string
bool operator()(const QString &testString)
StartsWith(const QString &string)
void operator()(QString &result, const QString &value)