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
qmovie.cpp
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
137#include "qmovie.h"
138
139#include "qglobal.h"
140#include "qelapsedtimer.h"
141#include "qimage.h"
142#include "qimagereader.h"
143#include "qpixmap.h"
144#include "qrect.h"
145#include "qelapsedtimer.h"
146#include "qtimer.h"
147#include "qmap.h"
148#include "qlist.h"
149#include "qbuffer.h"
150#include "qdir.h"
151#include "qloggingcategory.h"
152#include "private/qobject_p.h"
153#include "private/qproperty_p.h"
154
155#define QMOVIE_INVALID_DELAY -1
156
158
160
162{
163public:
165 int delay;
167 inline QFrameInfo(bool endMark)
168 : pixmap(QPixmap()), delay(QMOVIE_INVALID_DELAY), endMark(endMark)
169 { }
170
171 inline QFrameInfo()
172 : pixmap(QPixmap()), delay(QMOVIE_INVALID_DELAY), endMark(false)
173 { }
174
175 inline QFrameInfo(QPixmap &&pixmap, int delay)
176 : pixmap(std::move(pixmap)), delay(delay), endMark(false)
177 { }
178
179 inline bool isValid()
180 {
181 return endMark || !(pixmap.isNull() && (delay == QMOVIE_INVALID_DELAY));
182 }
183
184 inline bool isEndMarker()
185 { return endMark; }
186
187 static inline QFrameInfo endMarker()
188 { return QFrameInfo(true); }
189};
191
193{
194 Q_DECLARE_PUBLIC(QMovie)
195
196public:
198 bool isDone();
199 bool next();
200 int speedAdjustedDelay(int delay) const;
201 bool isValid() const;
202 bool jumpToFrame(int frameNumber);
203 int frameCount() const;
204 bool jumpToNextFrame();
205 QFrameInfo infoForFrame(int frameNumber);
206 void reset();
207
210 emit q_func()->stateChanged(newState);
211 }
212
213 // private slots
214 void _q_loadNextFrame();
215 void _q_loadNextFrame(bool starting);
216
218
219 void setSpeed(int percentSpeed) { q_func()->setSpeed(percentSpeed); }
221
222 QMovie::MovieState movieState = QMovie::NotRunning;
228 int nextDelay = 0;
229 int playCounter = -1;
232 QMovie::CacheNone)
233 bool haveReadAll = false;
234 bool isFirstIteration = true;
237
239};
240
248
252{
254 if (reader->device())
257 nextFrameNumber = 0;
259 nextDelay = 0;
260 playCounter = -1;
261 haveReadAll = false;
262 isFirstIteration = true;
263 frameMap.clear();
264}
265
269{
270 return (playCounter == 0);
271}
272
282{
283 return int( (qint64(delay) * qint64(100) ) / qint64(speed) );
284}
285
299{
300 Q_Q(QMovie);
301
302 if (frameNumber < 0)
303 return QFrameInfo(); // Invalid
304
305 if (haveReadAll && (frameNumber > greatestFrameNumber)) {
306 if (frameNumber == greatestFrameNumber+1)
307 return QFrameInfo::endMarker();
308 return QFrameInfo(); // Invalid
309 }
310
311 // For an animated image format, the tradition is that QMovie calls read()
312 // until canRead() == false, because the number of frames may not be known
313 // in advance; but if we're abusing a multi-frame format as an animation,
314 // canRead() may remain true, and we need to stop after reading the maximum
315 // number of frames that the image provides.
316 const bool supportsAnimation = reader->supportsOption(QImageIOHandler::Animation);
317 const int stopAtFrame = supportsAnimation ? -1 : frameCount();
318
319 // For an animated image format, QImageIOHandler::nextImageDelay() should
320 // provide the time to wait until showing the next frame; but multi-frame
321 // formats are not expected to provide this value, so use 1000 ms by default.
322 const auto nextFrameDelay = [&]() { return supportsAnimation ? reader->nextImageDelay() : 1000; };
323
324 if (cacheMode == QMovie::CacheNone) {
325 if (frameNumber != currentFrameNumber+1) {
326 // Non-sequential frame access
327 if (!reader->jumpToImage(frameNumber)) {
328 if (frameNumber == 0) {
329 // Special case: Attempt to "rewind" so we can loop
330 // ### This could be implemented as QImageReader::rewind()
331 if (reader->device()->isSequential())
332 return QFrameInfo(); // Invalid
336 QColor bgColor = reader->backgroundColor();
337 QSize scaledSize = reader->scaledSize();
338 delete reader;
339 if (fileName.isEmpty())
341 else
343 if (!reader->canRead()) // Provoke a device->open() call
344 emit q->error(reader->error());
346 reader->setBackgroundColor(bgColor);
347 reader->setScaledSize(scaledSize);
348 } else {
349 return QFrameInfo(); // Invalid
350 }
351 }
352 }
353 qCDebug(lcImageIo, "CacheNone: read frame %d of %d", frameNumber, stopAtFrame);
354 if (stopAtFrame > 0 ? (frameNumber < stopAtFrame) : reader->canRead()) {
355 // reader says we can read. Attempt to actually read image
356 // But if it's a non-animated multi-frame format and we know the frame count, stop there.
357 if (stopAtFrame > 0)
358 reader->jumpToImage(frameNumber);
359 QImage anImage = reader->read();
360 if (anImage.isNull()) {
361 // Reading image failed.
362 return QFrameInfo(); // Invalid
363 }
364 if (frameNumber > greatestFrameNumber)
365 greatestFrameNumber = frameNumber;
366 return QFrameInfo(QPixmap::fromImage(std::move(anImage)), nextFrameDelay());
367 } else if (frameNumber != 0) {
368 // We've read all frames now. Return an end marker
369 haveReadAll = true;
370 return QFrameInfo::endMarker();
371 } else {
372 // No readable frames
373 haveReadAll = true;
374 return QFrameInfo();
375 }
376 }
377
378 // CacheMode == CacheAll
379 if (frameNumber > greatestFrameNumber) {
380 // Frame hasn't been read from file yet. Try to do it
381 for (int i = greatestFrameNumber + 1; i <= frameNumber; ++i) {
382 qCDebug(lcImageIo, "CacheAll: read frame %d of %d", frameNumber, stopAtFrame);
383 if (stopAtFrame > 0 ? (frameNumber < stopAtFrame) : reader->canRead()) {
384 // reader says we can read. Attempt to actually read image
385 // But if it's a non-animated multi-frame format and we know the frame count, stop there.
386 if (stopAtFrame > 0)
387 reader->jumpToImage(frameNumber);
388 QImage anImage = reader->read();
389 if (anImage.isNull()) {
390 // Reading image failed.
391 return QFrameInfo(); // Invalid
392 }
394 QFrameInfo info(QPixmap::fromImage(std::move(anImage)), nextFrameDelay());
395 // Cache it!
397 if (i == frameNumber) {
398 return info;
399 }
400 } else {
401 // We've read all frames now. Return an end marker
402 haveReadAll = true;
403 return frameNumber == greatestFrameNumber + 1 ? QFrameInfo::endMarker() : QFrameInfo();
404 }
405 }
406 }
407 // Return info for requested (cached) frame
408 return frameMap.value(frameNumber);
409}
410
423{
425 time.start();
427 if (!info.isValid())
428 return false;
429 if (info.isEndMarker()) {
430 // We reached the end of the animation.
431 if (isFirstIteration) {
432 if (nextFrameNumber == 0) {
433 // No frames could be read at all (error).
434 return false;
435 }
436 // End of first iteration. Initialize play counter
438 isFirstIteration = false;
439 }
440 // Loop as appropriate
441 if (playCounter != 0) {
442 if (playCounter != -1) // Infinite?
443 playCounter--; // Nope
444 nextFrameNumber = 0;
445 return next();
446 }
447 // Loop no more. Done
448 return false;
449 }
450 // Image and delay OK, update internal state
452 currentPixmap = info.pixmap;
453
454 if (!speed)
455 return true;
456
458 // Adjust delay according to the time it took to read the frame
459 int processingTime = time.elapsed();
460 if (processingTime > nextDelay)
461 nextDelay = 0;
462 else
463 nextDelay = nextDelay - processingTime;
464 return true;
465}
466
473
475{
476 Q_Q(QMovie);
477 if (next()) {
478 if (starting && movieState == QMovie::NotRunning) {
480 emit q->started();
481 }
482
483 if (frameRect.size() != currentPixmap.rect().size()) {
485 emit q->resized(frameRect.size());
486 }
487
488 emit q->updated(frameRect);
489 emit q->frameChanged(currentFrameNumber);
490
491 if (speed && movieState == QMovie::Running)
493 } else {
494 // Could not read another frame
495 if (!isDone()) {
496 emit q->error(reader->error());
497 }
498
499 // Graceful finish
500 if (movieState != QMovie::Paused) {
501 nextFrameNumber = 0;
502 isFirstIteration = true;
503 playCounter = -1;
505 emit q->finished();
506 }
507 }
508}
509
514{
515 Q_Q(const QMovie);
516
517 if (greatestFrameNumber >= 0)
518 return true; // have we seen valid data
519 bool canRead = reader->canRead();
520 if (!canRead) {
521 // let the consumer know it's broken
522 //
523 // ### the const_cast here is ugly, but 'const' of this method is
524 // technically wrong right now, since it may cause the underlying device
525 // to open.
526 emit const_cast<QMovie*>(q)->error(reader->error());
527 }
528 return canRead;
529}
530
534bool QMoviePrivate::jumpToFrame(int frameNumber)
535{
536 if (frameNumber < 0)
537 return false;
538 if (currentFrameNumber == frameNumber)
539 return true;
540 nextFrameNumber = frameNumber;
545}
546
551{
552 int result;
553 if ((result = reader->imageCount()) != 0)
554 return result;
555 if (haveReadAll)
556 return greatestFrameNumber+1;
557 return 0; // Don't know
558}
559
567
576{
577 Q_D(QMovie);
578 d->reader = new QImageReader;
579 connect(&d->nextImageTimer, SIGNAL(timeout()), this, SLOT(_q_loadNextFrame()));
580}
581
591 : QObject(*new QMoviePrivate(this), parent)
592{
593 Q_D(QMovie);
594 d->reader = new QImageReader(device, format);
595 d->initialDevicePos = device->pos();
596 connect(&d->nextImageTimer, SIGNAL(timeout()), this, SLOT(_q_loadNextFrame()));
597}
598
608 : QObject(*new QMoviePrivate(this), parent)
609{
610 Q_D(QMovie);
611 d->absoluteFilePath = QDir(fileName).absolutePath();
612 d->reader = new QImageReader(fileName, format);
613 if (d->reader->device())
614 d->initialDevicePos = d->reader->device()->pos();
615 connect(&d->nextImageTimer, SIGNAL(timeout()), this, SLOT(_q_loadNextFrame()));
616}
617
622{
623 Q_D(QMovie);
624 delete d->reader;
625}
626
634{
635 Q_D(QMovie);
636 d->reader->setDevice(device);
637 d->reset();
638}
639
647{
648 Q_D(const QMovie);
649 return d->reader->device();
650}
651
659{
660 Q_D(QMovie);
661 d->absoluteFilePath = QDir(fileName).absolutePath();
662 d->reader->setFileName(fileName);
663 d->reset();
664}
665
674{
675 Q_D(const QMovie);
676 return d->reader->fileName();
677}
678
690{
691 Q_D(QMovie);
692 d->reader->setFormat(format);
693}
694
702{
703 Q_D(const QMovie);
704 return d->reader->format();
705}
706
714{
715 Q_D(QMovie);
716 d->reader->setBackgroundColor(color);
717}
718
726{
727 Q_D(const QMovie);
728 return d->reader->backgroundColor();
729}
730
737{
738 Q_D(const QMovie);
739 return d->movieState;
740}
741
749{
750 Q_D(const QMovie);
751 return d->frameRect;
752}
753
760{
761 Q_D(const QMovie);
762 return d->currentPixmap;
763}
764
771{
772 Q_D(const QMovie);
773 return d->currentPixmap.toImage();
774}
775
782bool QMovie::isValid() const
783{
784 Q_D(const QMovie);
785 return d->isValid();
786}
787
794{
795 Q_D(const QMovie);
796 return d->reader->error();
797}
798
806{
807 Q_D(const QMovie);
808 return d->reader->errorString();
809}
810
818{
819 Q_D(const QMovie);
820 return d->frameCount();
821}
822
828{
829 Q_D(const QMovie);
830 return d->nextDelay;
831}
832
838{
839 Q_D(const QMovie);
840 return d->currentFrameNumber;
841}
842
847{
848 Q_D(QMovie);
849 return d->jumpToNextFrame();
850}
851
856bool QMovie::jumpToFrame(int frameNumber)
857{
858 Q_D(QMovie);
859 return d->jumpToFrame(frameNumber);
860}
861
872{
873 Q_D(const QMovie);
874 return d->reader->loopCount();
875}
876
884void QMovie::setPaused(bool paused)
885{
886 Q_D(QMovie);
887 if (paused) {
888 if (d->movieState == NotRunning)
889 return;
890 d->enterState(Paused);
891 d->nextImageTimer.stop();
892 } else {
893 if (d->movieState == Running)
894 return;
895 d->enterState(Running);
896 d->nextImageTimer.start(nextFrameDelay());
897 }
898}
899
910void QMovie::setSpeed(int percentSpeed)
911{
912 Q_D(QMovie);
913 if (!d->speed && d->movieState == Running)
914 d->nextImageTimer.start(nextFrameDelay());
915 if (percentSpeed != d->speed) {
916 d->speed = percentSpeed;
917 d->speed.notify();
918 } else {
919 d->speed.removeBindingUnlessInWrapper();
920 }
921}
922
923int QMovie::speed() const
924{
925 Q_D(const QMovie);
926 return d->speed;
927}
928
929QBindable<int> QMovie::bindableSpeed()
930{
931 Q_D(QMovie);
932 return &d->speed;
933}
934
946{
947 Q_D(QMovie);
948 if (d->movieState == NotRunning) {
949 d->_q_loadNextFrame(true);
950 } else if (d->movieState == Paused) {
951 setPaused(false);
952 }
953}
954
966{
967 Q_D(QMovie);
968 if (d->movieState == NotRunning)
969 return;
970 d->enterState(NotRunning);
971 d->nextImageTimer.stop();
972 d->nextFrameNumber = 0;
973}
974
983{
984 Q_D(QMovie);
985 return d->reader->scaledSize();
986}
987
996{
997 Q_D(QMovie);
998 d->reader->setScaledSize(size);
999}
1000
1008QList<QByteArray> QMovie::supportedFormats()
1009{
1010 QList<QByteArray> list = QImageReader::supportedImageFormats();
1011
1014
1015 const auto doesntSupportAnimation =
1016 [&buffer](const QByteArray &format) {
1018 };
1019
1020 list.removeIf(doesntSupportAnimation);
1021 return list;
1022}
1023
1046{
1047 Q_D(const QMovie);
1048 return d->cacheMode;
1049}
1050
1052{
1053 Q_D(QMovie);
1054 d->cacheMode = cacheMode;
1055}
1056
1057QBindable<QMovie::CacheMode> QMovie::bindableCacheMode()
1058{
1059 Q_D(QMovie);
1060 return &d->cacheMode;
1061}
1062
1064
1065#include "moc_qmovie.cpp"
IOBluetoothDevice * device
\inmodule QtCore \reentrant
Definition qbuffer.h:16
bool open(OpenMode openMode) override
\reimp
Definition qbuffer.cpp:295
\inmodule QtCore
Definition qbytearray.h:57
The QColor class provides colors based on RGB, HSV or CMYK values.
Definition qcolor.h:31
\inmodule QtCore
Definition qdir.h:20
QString absolutePath() const
Returns the absolute path (a path that starts with "/" or with a drive specification),...
Definition qdir.cpp:667
\inmodule QtCore
bool isEndMarker()
Definition qmovie.cpp:184
QFrameInfo(bool endMark)
Definition qmovie.cpp:167
bool endMark
Definition qmovie.cpp:166
QPixmap pixmap
Definition qmovie.cpp:164
QFrameInfo(QPixmap &&pixmap, int delay)
Definition qmovie.cpp:175
static QFrameInfo endMarker()
Definition qmovie.cpp:187
bool isValid()
Definition qmovie.cpp:179
\inmodule QtCore \reentrant
Definition qiodevice.h:34
virtual qint64 pos() const
For random-access devices, this function returns the position that data is written to or read from.
virtual bool isSequential() const
Returns true if this device is sequential; otherwise returns false.
virtual bool seek(qint64 pos)
For random-access devices, this function sets the current position to pos, returning true on success,...
The QImageReader class provides a format independent interface for reading images from files or other...
int imageCount() const
For image formats that support animation, this function returns the total number of images in the ani...
QSize scaledSize() const
Returns the scaled size of the image.
QString fileName() const
If the currently assigned device is a QFile, or if setFileName() has been called, this function retur...
void setScaledSize(const QSize &size)
Sets the scaled size of the image to size.
ImageReaderError
This enum describes the different types of errors that can occur when reading images with QImageReade...
QIODevice * device() const
Returns the device currently assigned to QImageReader, or \nullptr if no device has been assigned.
QColor backgroundColor() const
bool jumpToImage(int imageNumber)
For image formats that support animation, this function skips to the image whose sequence number is i...
bool supportsOption(QImageIOHandler::ImageOption option) const
QByteArray format() const
Returns the format QImageReader uses for reading images.
bool canRead() const
Returns true if an image can be read for the device (i.e., the image format is supported,...
static QList< QByteArray > supportedImageFormats()
Returns the list of image formats supported by QImageReader.
void setBackgroundColor(const QColor &color)
ImageReaderError error() const
Returns the type of error that occurred last.
int nextImageDelay() const
For image formats that support animation, this function returns the number of milliseconds to wait un...
int loopCount() const
For image formats that support animation, this function returns the number of times the animation sho...
QImage read()
Reads an image from the device.
\inmodule QtGui
Definition qimage.h:37
qsizetype removeIf(Predicate pred)
Definition qlist.h:604
Definition qmap.h:187
iterator insert(const Key &key, const T &value)
Definition qmap.h:688
T value(const Key &key, const T &defaultValue=T()) const
Definition qmap.h:357
void clear()
Definition qmap.h:289
int speedAdjustedDelay(int delay) const
Definition qmovie.cpp:281
QString absoluteFilePath
Definition qmovie.cpp:236
QTimer nextImageTimer
Definition qmovie.cpp:238
void _q_loadNextFrame()
Definition qmovie.cpp:469
QMovie::MovieState movieState
Definition qmovie.cpp:222
QPixmap currentPixmap
Definition qmovie.cpp:224
QMoviePrivate(QMovie *qq)
Definition qmovie.cpp:243
bool isDone()
Definition qmovie.cpp:268
int nextFrameNumber
Definition qmovie.cpp:226
QImageReader * reader
Definition qmovie.cpp:217
QFrameInfo infoForFrame(int frameNumber)
Definition qmovie.cpp:298
QMap< int, QFrameInfo > frameMap
Definition qmovie.cpp:235
qint64 initialDevicePos
Definition qmovie.cpp:230
void enterState(QMovie::MovieState newState)
Definition qmovie.cpp:208
void setSpeed(int percentSpeed)
Definition qmovie.cpp:219
int currentFrameNumber
Definition qmovie.cpp:225
bool isValid() const
Definition qmovie.cpp:513
void reset()
Definition qmovie.cpp:251
QRect frameRect
Definition qmovie.cpp:223
bool jumpToFrame(int frameNumber)
Definition qmovie.cpp:534
bool jumpToNextFrame()
Definition qmovie.cpp:563
bool next()
Definition qmovie.cpp:422
int frameCount() const
Definition qmovie.cpp:550
int greatestFrameNumber
Definition qmovie.cpp:227
bool isFirstIteration
Definition qmovie.cpp:234
\inmodule QtGui
Definition qmovie.h:28
QPixmap currentPixmap() const
Returns the current frame as a QPixmap.
Definition qmovie.cpp:759
MovieState state() const
Returns the current state of QMovie.
Definition qmovie.cpp:736
QImage currentImage() const
Returns the current frame as a QImage.
Definition qmovie.cpp:770
QBindable< CacheMode > bindableCacheMode()
Definition qmovie.cpp:1057
QColor backgroundColor() const
Returns the background color of the movie.
Definition qmovie.cpp:725
int currentFrameNumber() const
Returns the sequence number of the current frame.
Definition qmovie.cpp:837
QRect frameRect() const
Returns the rect of the last frame.
Definition qmovie.cpp:748
QImageReader::ImageReaderError lastError() const
Returns the most recent error that occurred while attempting to read image data.
Definition qmovie.cpp:793
QIODevice * device() const
Returns the device QMovie reads image data from.
Definition qmovie.cpp:646
MovieState
This enum describes the different states of QMovie.
Definition qmovie.h:34
@ Paused
Definition qmovie.h:36
@ Running
Definition qmovie.h:37
@ NotRunning
Definition qmovie.h:35
static QList< QByteArray > supportedFormats()
Definition qmovie.cpp:1008
void setBackgroundColor(const QColor &color)
For image formats that support it, this function sets the background color to color.
Definition qmovie.cpp:713
~QMovie()
Destructs the QMovie object.
Definition qmovie.cpp:621
CacheMode
This enum describes the different cache modes of QMovie.
Definition qmovie.h:40
@ CacheNone
Definition qmovie.h:41
QSize scaledSize()
Definition qmovie.cpp:982
void setFileName(const QString &fileName)
Sets the name of the file that QMovie reads image data from, to fileName.
Definition qmovie.cpp:658
void start()
Starts the movie.
Definition qmovie.cpp:945
int speed
the movie's speed
Definition qmovie.h:31
int loopCount() const
Returns the number of times the movie will loop before it finishes.
Definition qmovie.cpp:871
QBindable< int > bindableSpeed()
Definition qmovie.cpp:929
int nextFrameDelay() const
Returns the number of milliseconds QMovie will wait before updating the next frame in the animation.
Definition qmovie.cpp:827
bool jumpToNextFrame()
Jumps to the next frame.
Definition qmovie.cpp:846
void stop()
Stops the movie.
Definition qmovie.cpp:965
CacheMode cacheMode
the movie's cache mode
Definition qmovie.h:32
QString fileName() const
Returns the name of the file that QMovie reads image data from.
Definition qmovie.cpp:673
void setSpeed(int percentSpeed)
Definition qmovie.cpp:910
void setDevice(QIODevice *device)
Sets the current device to device.
Definition qmovie.cpp:633
QMovie(QObject *parent=nullptr)
Constructs a QMovie object, passing the parent object to QObject's constructor.
Definition qmovie.cpp:574
bool jumpToFrame(int frameNumber)
Jumps to frame number frameNumber.
Definition qmovie.cpp:856
void setFormat(const QByteArray &format)
Sets the format that QMovie will use when decoding image data, to format.
Definition qmovie.cpp:689
void setScaledSize(const QSize &size)
Definition qmovie.cpp:995
QByteArray format() const
Returns the format that QMovie uses when decoding image data.
Definition qmovie.cpp:701
bool isValid() const
Returns true if the movie is valid (e.g., the image data is readable and the image format is supporte...
Definition qmovie.cpp:782
void setCacheMode(CacheMode mode)
Definition qmovie.cpp:1051
int frameCount() const
Returns the number of frames in the movie.
Definition qmovie.cpp:817
QString lastErrorString() const
Returns a human-readable representation of the most recent error that occurred while attempting to re...
Definition qmovie.cpp:805
void setPaused(bool paused)
If paused is true, QMovie will enter \l Paused state and emit stateChanged(Paused); otherwise it will...
Definition qmovie.cpp:884
QObject * q_ptr
Definition qobject.h:72
QObject * parent
Definition qobject.h:73
\inmodule QtCore
Definition qobject.h:103
static QMetaObject::Connection connect(const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType=Qt::AutoConnection)
\threadsafe
Definition qobject.cpp:2960
Returns a copy of the pixmap that is transformed using the given transformation transform and transfo...
Definition qpixmap.h:27
QRect rect() const
Returns the pixmap's enclosing rectangle.
Definition qpixmap.cpp:505
static QPixmap fromImage(const QImage &image, Qt::ImageConversionFlags flags=Qt::AutoColor)
Converts the given image to a pixmap using the specified flags to control the conversion.
Definition qpixmap.cpp:1437
\inmodule QtCore\reentrant
Definition qrect.h:30
constexpr QSize size() const noexcept
Returns the size of the rectangle.
Definition qrect.h:242
\inmodule QtCore
Definition qsize.h:25
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:129
\inmodule QtCore
Definition qtimer.h:20
void setSingleShot(bool singleShot)
Definition qtimer.cpp:552
void start(int msec)
Starts or restarts the timer with a timeout interval of msec milliseconds.
Definition qtimer.cpp:241
void stop()
Stops the timer.
Definition qtimer.cpp:267
#define this
Definition dialogs.cpp:9
void newState(QList< State > &states, const char *token, const char *lexem, bool pre)
Combined button and popup list for selecting options.
DBusConnection const char DBusError * error
#define qCDebug(category,...)
#define Q_DECLARE_LOGGING_CATEGORY(name)
#define QMOVIE_INVALID_DELAY
Definition qmovie.cpp:155
#define SLOT(a)
Definition qobjectdefs.h:52
#define SIGNAL(a)
Definition qobjectdefs.h:53
GLenum GLuint GLintptr GLsizeiptr size
[1]
GLbitfield GLuint64 timeout
[4]
GLenum GLuint buffer
GLuint color
[2]
GLint GLsizei GLsizei GLenum format
GLdouble GLdouble GLdouble GLdouble q
Definition qopenglext.h:259
GLuint64EXT * result
[6]
#define Q_OBJECT_BINDABLE_PROPERTY_WITH_ARGS(...)
Definition qproperty.h:1266
#define Q_OBJECT_COMPAT_PROPERTY_WITH_ARGS(...)
#define emit
@ Q_RELOCATABLE_TYPE
Definition qtypeinfo.h:158
#define Q_DECLARE_TYPEINFO(TYPE, FLAGS)
Definition qtypeinfo.h:180
long long qint64
Definition qtypes.h:60
QList< int > list
[14]
widget render & pixmap
QHostInfo info
[0]