QDeadlineTimer Class
Die Klasse QDeadlineTimer markiert einen Termin in der Zukunft. Mehr...
Kopfzeile: | #include <QDeadlineTimer> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
Diese Klasse ist stark vergleichbar.
Hinweis: Alle Funktionen in dieser Klasse sind reentrant.
Öffentliche Typen
enum class | ForeverConstant { Forever } |
Öffentliche Funktionen
QDeadlineTimer() | |
QDeadlineTimer(Qt::TimerType timerType) | |
QDeadlineTimer(QDeadlineTimer::ForeverConstant, Qt::TimerType timerType = Qt::CoarseTimer) | |
QDeadlineTimer(qint64 msecs, Qt::TimerType type = Qt::CoarseTimer) | |
QDeadlineTimer(std::chrono::duration<Rep, Period> remaining, Qt::TimerType type = Qt::CoarseTimer) | |
QDeadlineTimer(std::chrono::time_point<Clock, Duration> deadline, Qt::TimerType type = Qt::CoarseTimer) | |
qint64 | deadline() const |
qint64 | deadlineNSecs() const |
bool | hasExpired() const |
bool | isForever() const |
qint64 | remainingTime() const |
std::chrono::nanoseconds | remainingTimeAsDuration() const |
qint64 | remainingTimeNSecs() const |
void | setDeadline(qint64 msecs, Qt::TimerType timerType = Qt::CoarseTimer) |
void | setDeadline(std::chrono::time_point<Clock, Duration> deadline, Qt::TimerType type = Qt::CoarseTimer) |
void | setPreciseDeadline(qint64 secs, qint64 nsecs = 0, Qt::TimerType timerType = Qt::CoarseTimer) |
void | setPreciseRemainingTime(qint64 secs, qint64 nsecs = 0, Qt::TimerType timerType = Qt::CoarseTimer) |
void | setRemainingTime(qint64 msecs, Qt::TimerType timerType = Qt::CoarseTimer) |
void | setRemainingTime(std::chrono::duration<Rep, Period> remaining, Qt::TimerType type = Qt::CoarseTimer) |
void | setTimerType(Qt::TimerType timerType) |
void | swap(QDeadlineTimer &other) |
Qt::TimerType | timerType() const |
QDeadlineTimer & | operator+=(qint64 msecs) |
QDeadlineTimer & | operator-=(qint64 msecs) |
QDeadlineTimer & | operator=(std::chrono::duration<Rep, Period> remaining) |
QDeadlineTimer & | operator=(std::chrono::time_point<Clock, Duration> deadline_) |
Statische öffentliche Mitglieder
QDeadlineTimer | addNSecs(QDeadlineTimer dt, qint64 nsecs) |
QDeadlineTimer | current(Qt::TimerType timerType = Qt::CoarseTimer) |
Verwandte Nicht-Mitglieder
bool | operator!=(const QDeadlineTimer &lhs, const QDeadlineTimer &rhs) |
QDeadlineTimer | operator+(QDeadlineTimer dt, qint64 msecs) |
QDeadlineTimer | operator+(qint64 msecs, QDeadlineTimer dt) |
QDeadlineTimer | operator-(QDeadlineTimer dt, qint64 msecs) |
bool | operator<(const QDeadlineTimer &lhs, const QDeadlineTimer &rhs) |
bool | operator<=(const QDeadlineTimer &lhs, const QDeadlineTimer &rhs) |
bool | operator==(const QDeadlineTimer &lhs, const QDeadlineTimer &rhs) |
bool | operator>(const QDeadlineTimer &lhs, const QDeadlineTimer &rhs) |
bool | operator>=(const QDeadlineTimer &lhs, const QDeadlineTimer &rhs) |
Detaillierte Beschreibung
Die Klasse QDeadlineTimer wird normalerweise verwendet, um zukünftige Fristen zu berechnen und zu überprüfen, ob die Frist abgelaufen ist. QDeadlineTimer kann auch für Fristen ohne Ablauf ("forever") verwendet werden. Er bildet ein Gegenstück zu QElapsedTimer, das berechnet, wie viel Zeit seit dem Aufruf von QElapsedTimer::start() verstrichen ist.
QDeadlineTimer bietet im Vergleich zu QElapsedTimer::hasExpired() eine komfortablere API.
Der typische Anwendungsfall für die Klasse besteht darin, einen QDeadlineTimer zu erstellen, bevor die betreffende Operation gestartet wird, und dann remainingTime() oder hasExpired() zu verwenden, um festzustellen, ob die Operation weiter versucht werden soll. QDeadlineTimer-Objekte können an Funktionen übergeben werden, die zur Ausführung dieser Operation aufgerufen werden, damit sie wissen, wie lange sie noch arbeiten müssen.
void executeOperation(int msecs) { QDeadlineTimer deadline(msecs); do { if (readFromDevice(deadline.remainingTime())) break; waitForReadyRead(deadline); } while (!deadline.hasExpired()); }
Viele QDeadlineTimer-Funktionen arbeiten mit Timeout-Werten, die alle in Millisekunden gemessen werden. Es gibt zwei spezielle Werte, wie bei vielen anderen Qt-Funktionen, die waitFor
oder ähnlich heißen:
- 0: keine Zeit mehr übrig, abgelaufen
- -1: unendlich viel Zeit übrig, der Timer läuft nie ab
Referenz-Uhren
QDeadlineTimer verwendet die gleiche Uhr wie QElapsedTimer (siehe QElapsedTimer::clockType() und QElapsedTimer::isMonotonic()).
Timer-Typen
Wie QTimer und QChronoTimer kann QDeadlineTimer zwischen verschiedenen Grobheitsgraden für die Zeitgeber wählen. Sie können ein präzises Timing wählen, indem Sie Qt::PreciseTimer an die Funktionen übergeben, die den Timer setzen oder ändern, oder Sie können ein grobes Timing wählen, indem Sie Qt::CoarseTimer übergeben. Qt::VeryCoarseTimer wird derzeit auf die gleiche Weise interpretiert wie Qt::CoarseTimer.
Diese Funktion hängt von der Unterstützung durch das Betriebssystem ab: wenn das Betriebssystem keine grobe Timer-Funktionalität unterstützt, dann verhält sich QDeadlineTimer so, wie Qt::PreciseTimer übergeben wurde.
QDeadlineTimer ist auf Qt::CoarseTimer voreingestellt, da auf Betriebssystemen, die grobes Timing unterstützen, Timing-Aufrufe an diese Taktquelle oft viel effizienter sind. Der Grad der Grobheit hängt vom Betriebssystem ab, sollte aber in der Größenordnung von ein paar Millisekunden liegen.
std::chrono
Kompatibilität
QDeadlineTimer ist kompatibel mit der std::chrono
API von C++11 und kann sowohl aus std::chrono::duration
als auch aus std::chrono::time_point
Objekten erstellt oder mit ihnen verglichen werden. Darüber hinaus ist er vollständig kompatibel mit den Zeitliteralen von C++14, die es erlauben, Code als zu schreiben:
using namespace std::chrono; using namespace std::chrono_literals; QDeadlineTimer deadline(30s); device->waitForReadyRead(deadline); if (deadline.remainingTime<nanoseconds>() > 300ms) cleanup();
Wie im obigen Beispiel zu sehen ist, bietet QDeadlineTimer eine schablonenhafte Version von remainingTime() und deadline(), die verwendet werden kann, um std::chrono
Objekte zurückzugeben.
Beachten Sie, dass der Vergleich mit time_point
nicht so effizient ist wie der Vergleich mit duration
, da QDeadlineTimer möglicherweise von seiner eigenen internen Taktquelle in die vom time_point
Objekt verwendete Taktquelle konvertieren muss. Beachten Sie auch, dass aufgrund dieser Konvertierung die Fristen nicht präzise sind, so dass der folgende Code nicht gleichmäßig verglichen werden kann:
using namespace std::chrono; using namespace std::chrono_literals; auto now = steady_clock::now(); QDeadlineTimer deadline(now + 1s); Q_ASSERT(deadline == now + 1s);
Siehe auch QTime, QChronoTimer, QDeadlineTimer, und Qt::TimerType.
Dokumentation der Mitgliedstypen
enum class QDeadlineTimer::ForeverConstant
Konstante | Wert | Beschreibung |
---|---|---|
QDeadlineTimer::ForeverConstant::Forever | 0 | Wird bei der Erstellung einer QDeadlineTimer verwendet, um anzugeben, dass die Frist nicht ablaufen soll |
Dokumentation der Mitgliedsfunktionen
[constexpr noexcept]
QDeadlineTimer::QDeadlineTimer()
[explicit constexpr noexcept]
QDeadlineTimer::QDeadlineTimer(Qt::TimerType timerType)
Konstruiert ein abgelaufenes QDeadlineTimer Objekt. Für dieses Objekt gibt remainingTime() 0 zurück. Wenn timerType nicht gesetzt ist, verwendet das Objekt coarse timer type .
Der Timer-Typ timerType kann ignoriert werden, da der Timer bereits abgelaufen ist. Ebenso versucht diese Funktion aus Optimierungsgründen nicht, die aktuelle Zeit zu ermitteln, sondern verwendet einen Wert, von dem bekannt ist, dass er in der Vergangenheit liegt. Daher kann deadline() einen unerwarteten Wert zurückgeben, und dieses Objekt kann nicht für die Berechnung der Überfälligkeit verwendet werden. Wenn diese Funktionalität erforderlich ist, verwenden Sie QDeadlineTimer::current().
Siehe auch hasExpired(), remainingTime(), Qt::TimerType, und current().
[constexpr noexcept]
QDeadlineTimer::QDeadlineTimer(QDeadlineTimer::ForeverConstant, Qt::TimerType timerType = Qt::CoarseTimer)
QDeadlineTimer-Objekte, die mit ForeverConstant erstellt wurden, laufen nie ab. Für solche Objekte gibt remainingTime() -1 zurück, deadline() gibt den Maximalwert zurück und isForever() gibt true zurück.
Der Timer-Typ timerType kann ignoriert werden, da der Timer nie abläuft.
Siehe auch ForeverConstant, hasExpired(), isForever(), remainingTime(), und timerType().
[explicit noexcept]
QDeadlineTimer::QDeadlineTimer(qint64 msecs, Qt::TimerType type = Qt::CoarseTimer)
Konstruiert ein QDeadlineTimer-Objekt mit einer Verfallszeit von msecs msecs ab dem Zeitpunkt der Erstellung dieses Objekts, falls msecs positiv ist. Wenn msecs gleich Null ist, wird dieser QDeadlineTimer als abgelaufen markiert, wodurch remainingTime() Null und deadline() einen unbestimmten Zeitpunkt in der Vergangenheit zurückgibt. Wenn msecs negativ ist, wird der Timer so eingestellt, dass er nie abläuft, wodurch remainingTime() -1 und deadline() den Maximalwert zurückgibt.
Das QDeadlineTimer-Objekt wird mit dem angegebenen Timer type erstellt.
Wenn msecs gleich Null ist, kann diese Funktion zu Optimierungszwecken die Ermittlung der aktuellen Zeit überspringen und stattdessen einen Wert verwenden, der bekanntermaßen in der Vergangenheit liegt. In diesem Fall kann deadline() einen unerwarteten Wert zurückgeben, und das Objekt kann nicht für die Berechnung der Überfälligkeit verwendet werden. Wenn diese Funktionalität erforderlich ist, verwenden Sie QDeadlineTimer::current() und fügen Sie die Zeit hinzu.
Hinweis: Vor Qt 6.6 war der einzige Wert, der dazu führte, dass der Timer nie ablief, -1.
Siehe auch hasExpired(), isForever(), remainingTime(), und setRemainingTime().
template <typename Rep, typename Period> QDeadlineTimer::QDeadlineTimer(std::chrono::duration<Rep, Period> remaining, Qt::TimerType type = Qt::CoarseTimer)
Konstruiert ein QDeadlineTimer-Objekt mit einer verbleibenden Zeit von remaining. Wenn remaining Null oder negativ ist, wird dieses QDeadlineTimer-Objekt als abgelaufen markiert, während, wenn remaining gleich duration::max()
ist, das Objekt so gesetzt wird, dass es nie abläuft.
Das QDeadlineTimer-Objekt wird mit dem angegebenen Timer type konstruiert.
Dieser Konstruktor kann mit C++14s benutzerdefinierten Literalen für Zeit, wie in, verwendet werden:
using namespace std::chrono_literals; QDeadlineTimer deadline(250ms);
Wenn remaining Null oder negativ ist, kann diese Funktion zu Optimierungszwecken die aktuelle Zeit auslassen und stattdessen einen Wert verwenden, von dem bekannt ist, dass er in der Vergangenheit liegt. In diesem Fall kann deadline() einen unerwarteten Wert zurückgeben, und dieses Objekt kann nicht zur Berechnung der Überfälligkeit verwendet werden. Wenn diese Funktionalität erforderlich ist, verwenden Sie QDeadlineTimer::current() und fügen Sie die Zeit hinzu.
Siehe auch hasExpired(), isForever(), remainingTime(), und setRemainingTime().
template <typename Clock, typename Duration = typename Clock::duration> QDeadlineTimer::QDeadlineTimer(std::chrono::time_point<Clock, Duration> deadline, Qt::TimerType type = Qt::CoarseTimer)
Konstruiert ein QDeadlineTimer-Objekt mit einer Deadline zum Zeitpunkt deadline und konvertiert von der Zeitquelle Clock
in die interne Zeitquelle von Qt (siehe QElapsedTimer::clockType()).
Wenn deadline in der Vergangenheit liegt, wird dieses QDeadlineTimer-Objekt auf abgelaufen gesetzt, wenn deadline gleich Duration::max()
ist, wird dieses Objekt auf niemals ablaufend gesetzt.
Das QDeadlineTimer-Objekt wird mit dem angegebenen Timer type erstellt.
Siehe auch hasExpired(), isForever(), remainingTime(), und setDeadline().
[static noexcept]
QDeadlineTimer QDeadlineTimer::addNSecs(QDeadlineTimer dt, qint64 nsecs)
Gibt ein QDeadlineTimer Objekt zurück, dessen Frist gegenüber dt um nsecs Nanosekunden verlängert ist. Wenn dt so eingestellt wurde, dass es nie abläuft, gibt diese Funktion ein QDeadlineTimer zurück, das ebenfalls nicht abläuft.
Hinweis: Wenn dt als abgelaufen erstellt wurde, ist seine Frist unbestimmt und das Hinzufügen einer Zeitspanne kann dazu führen, dass es nicht abläuft oder nicht.
[static noexcept]
QDeadlineTimer QDeadlineTimer::current(Qt::TimerType timerType = Qt::CoarseTimer)
Gibt eine QDeadlineTimer zurück, die abgelaufen ist, aber garantiert die aktuelle Zeit enthält. Objekte, die mit dieser Funktion erstellt werden, können mit Hilfe der Funktion deadline() an der Berechnung der Überfälligkeit eines Timers teilnehmen.
Das Objekt QDeadlineTimer wird mit dem angegebenen timerType erstellt.
[noexcept]
qint64 QDeadlineTimer::deadline() const
Gibt den absoluten Zeitpunkt für die im Objekt QDeadlineTimer gespeicherte Frist zurück, berechnet in Millisekunden relativ zur Referenzuhr, genau wie QElapsedTimer::msecsSinceReference(). Der Wert liegt in der Vergangenheit, wenn diese QDeadlineTimer abgelaufen ist.
Wenn diese QDeadlineTimer nie abläuft, gibt diese Funktion std::numeric_limits<qint64>::max()
zurück.
Diese Funktion kann verwendet werden, um die Zeit zu berechnen, die ein Timer überfällig ist, indem man QDeadlineTimer::current() oder QElapsedTimer::msecsSinceReference() subtrahiert, wie im folgenden Beispiel:
qint64 realTimeLeft = deadline.deadline(); if (realTimeLeft != (std::numeric_limits<qint64>::max)()) { realTimeLeft -= QDeadlineTimer::current().deadline(); // or: //QElapsedTimer timer; //timer.start(); //realTimeLeft -= timer.msecsSinceReference(); }
Hinweis: Zeitgeber, die als abgelaufen erstellt wurden, haben einen unbestimmten Zeitpunkt in der Vergangenheit als Frist, so dass die obige Berechnung möglicherweise nicht funktioniert.
Siehe auch remainingTime(), deadlineNSecs(), und setDeadline().
[noexcept]
qint64 QDeadlineTimer::deadlineNSecs() const
Gibt den absoluten Zeitpunkt für die im Objekt QDeadlineTimer gespeicherte Frist zurück, berechnet in Nanosekunden relativ zur Referenzuhr, genau wie QElapsedTimer::msecsSinceReference(). Der Wert liegt in der Vergangenheit, wenn diese QDeadlineTimer abgelaufen ist.
Wenn diese QDeadlineTimer nie abläuft oder die Anzahl der Nanosekunden bis zur Frist nicht im Rückgabetyp untergebracht werden kann, gibt diese Funktion std::numeric_limits<qint64>::max()
zurück.
Diese Funktion kann verwendet werden, um die Zeit zu berechnen, die ein Timer überfällig ist, indem QDeadlineTimer::current() subtrahiert wird, wie im folgenden Beispiel:
qint64 realTimeLeft = deadline.deadlineNSecs(); if (realTimeLeft != std::numeric_limits<qint64>::max()) realTimeLeft -= QDeadlineTimer::current().deadlineNSecs();
Hinweis: Zeitgeber, die als abgelaufen erstellt wurden, haben einen unbestimmten Zeitpunkt in der Vergangenheit als Frist, so dass die obige Berechnung möglicherweise nicht funktioniert.
Siehe auch remainingTime() und deadlineNSecs().
[noexcept]
bool QDeadlineTimer::hasExpired() const
Gibt true zurück, wenn dieses QDeadlineTimer Objekt abgelaufen ist, false, wenn noch Zeit übrig ist. Bei Objekten, die abgelaufen sind, gibt remainingTime() den Wert Null zurück und deadline() gibt einen Zeitpunkt in der Vergangenheit zurück.
QDeadlineTimer Objekte, die mit ForeverConstant erstellt wurden, laufen nie ab und diese Funktion gibt für sie immer false zurück.
Siehe auch isForever() und remainingTime().
[constexpr noexcept]
bool QDeadlineTimer::isForever() const
Gibt true zurück, wenn dieses QDeadlineTimer Objekt nie abläuft, andernfalls false. Für Timer, die nie ablaufen, gibt remainingTime() immer -1 zurück und deadline() gibt den Maximalwert zurück.
Siehe auch ForeverConstant, hasExpired(), und remainingTime().
[noexcept]
qint64 QDeadlineTimer::remainingTime() const
Gibt die verbleibende Zeit in diesem QDeadlineTimer Objekt in Millisekunden zurück. Wenn der Timer bereits abgelaufen ist, gibt diese Funktion Null zurück, und es ist nicht möglich, mit dieser Funktion die überfällige Zeit zu ermitteln (siehe deadline()). Wurde der Timer so eingestellt, dass er nie abläuft, gibt diese Funktion -1 zurück.
Diese Funktion eignet sich für die Verwendung in Qt-APIs, die eine Zeitüberschreitung von Millisekunden benötigen, wie z.B. die vielen QIODevice waitFor
Funktionen oder die zeitgesteuerten Sperrfunktionen in QMutex, QWaitCondition, QSemaphore, oder QReadWriteLock. Ein Beispiel:
mutex.tryLock(deadline.remainingTime());
Siehe auch setRemainingTime(), remainingTimeNSecs(), isForever(), und hasExpired().
[noexcept]
std::chrono::nanoseconds QDeadlineTimer::remainingTimeAsDuration() const
Gibt die verbleibende Zeit bis zum Ablauf der Frist zurück.
[noexcept]
qint64 QDeadlineTimer::remainingTimeNSecs() const
Gibt die verbleibende Zeit in diesem QDeadlineTimer Objekt in Nanosekunden zurück. Wenn der Timer bereits abgelaufen ist, gibt diese Funktion Null zurück, und es ist nicht möglich, mit dieser Funktion die überfällige Zeit zu ermitteln. Wurde der Timer so eingestellt, dass er nie abläuft, gibt diese Funktion -1 zurück.
Siehe auch remainingTime(), isForever(), und hasExpired().
[noexcept]
void QDeadlineTimer::setDeadline(qint64 msecs, Qt::TimerType timerType = Qt::CoarseTimer)
Setzt die Frist für dieses QDeadlineTimer Objekt auf den absoluten Zeitpunkt msecs, gezählt in Millisekunden seit der Referenzuhr (wie QElapsedTimer::msecsSinceReference()), und den Timer-Typ auf timerType. Liegt der Wert in der Vergangenheit, wird dieses QDeadlineTimer als abgelaufen markiert.
Wenn msecs gleich std::numeric_limits<qint64>::max()
ist oder die Frist jenseits eines darstellbaren Punktes in der Zukunft liegt, wird dieser QDeadlineTimer auf nie ablaufend gesetzt.
Siehe auch setPreciseDeadline(), deadline(), deadlineNSecs(), und setRemainingTime().
template <typename Clock, typename Duration = typename Clock::duration> void QDeadlineTimer::setDeadline(std::chrono::time_point<Clock, Duration> deadline, Qt::TimerType type = Qt::CoarseTimer)
Setzt dieses QDeadlineTimer -Objekt auf den durch deadline markierten Zeitpunkt, wobei es von der Uhrquelle Clock
in die interne Uhrquelle von Qt konvertiert wird (siehe QElapsedTimer::clockType()).
Wenn deadline in der Vergangenheit liegt, wird dieses QDeadlineTimer Objekt auf abgelaufen gesetzt, wohingegen, wenn deadline gleich Duration::max()
ist, dieses Objekt auf nie ablaufend gesetzt wird.
Der Timer-Typ für dieses QDeadlineTimer Objekt wird auf den angegebenen type gesetzt.
Siehe auch hasExpired(), isForever(), und remainingTime().
[noexcept]
void QDeadlineTimer::setPreciseDeadline(qint64 secs, qint64 nsecs = 0, Qt::TimerType timerType = Qt::CoarseTimer)
Setzt die Frist für dieses QDeadlineTimer Objekt auf secs Sekunden und nsecs Nanosekunden seit der Referenzuhr-Epoche (das gleiche wie QElapsedTimer::msecsSinceReference()), und den Timer-Typ auf timerType. Wenn der Wert in der Vergangenheit liegt, wird dieses QDeadlineTimer als abgelaufen markiert.
Wenn secs oder nsecs gleich std::numeric_limits<qint64>::max()
ist, wird QDeadlineTimer auf nie ablaufend gesetzt. Wenn nsecs länger als 1 Milliarde Nanosekunden (1 Sekunde) ist, wird secs entsprechend angepasst.
Siehe auch setDeadline(), deadline(), deadlineNSecs(), und setRemainingTime().
[noexcept]
void QDeadlineTimer::setPreciseRemainingTime(qint64 secs, qint64 nsecs = 0, Qt::TimerType timerType = Qt::CoarseTimer)
Setzt die verbleibende Zeit für dieses QDeadlineTimer Objekt auf secs Sekunden plus nsecs Nanosekunden ab jetzt, wenn secs einen positiven Wert hat. Wenn secs negativ ist, wird QDeadlineTimer so eingestellt, dass es nie abläuft (dieses Verhalten gilt nicht für nsecs). Wenn beide Parameter Null sind, wird QDeadlineTimer als abgelaufen markiert.
Aus Optimierungsgründen kann diese Funktion, wenn sowohl secs als auch nsecs Null sind, die Ermittlung der aktuellen Zeit überspringen und stattdessen einen Wert verwenden, von dem bekannt ist, dass er in der Vergangenheit liegt. In diesem Fall kann deadline() einen unerwarteten Wert zurückgeben, und das Objekt kann nicht für die Berechnung der Überfälligkeit verwendet werden. Wenn diese Funktionalität erforderlich ist, verwenden Sie QDeadlineTimer::current() und fügen Sie die Zeit hinzu.
Der Timer-Typ für dieses QDeadlineTimer Objekt wird auf den angegebenen timerType gesetzt.
Hinweis: Vor Qt 6.6 war die einzige Bedingung, die dazu führte, dass der Timer nie ablief, wenn secs -1 war.
Siehe auch setRemainingTime(), hasExpired(), isForever(), und remainingTime().
[noexcept]
void QDeadlineTimer::setRemainingTime(qint64 msecs, Qt::TimerType timerType = Qt::CoarseTimer)
Setzt die verbleibende Zeit für dieses QDeadlineTimer Objekt auf msecs Millisekunden ab jetzt, wenn msecs einen positiven Wert hat. Wenn msecs gleich Null ist, wird dieses QDeadlineTimer Objekt als abgelaufen markiert, während ein negativer Wert dazu führt, dass es nie abläuft.
Wenn msecs gleich Null ist, kann diese Funktion aus Optimierungsgründen die aktuelle Zeit überspringen und stattdessen einen Wert verwenden, der bekanntermaßen in der Vergangenheit liegt. In diesem Fall kann deadline() einen unerwarteten Wert zurückgeben, und das Objekt kann nicht für die Berechnung der Überfälligkeit verwendet werden. Wenn diese Funktionalität erforderlich ist, verwenden Sie QDeadlineTimer::current() und fügen Sie die Zeit hinzu.
Der Timer-Typ für dieses QDeadlineTimer Objekt wird auf den angegebenen timerType gesetzt.
Hinweis: Vor Qt 6.6 war der einzige Wert, bei dem der Timer nie ablief, -1.
Siehe auch setPreciseRemainingTime(), hasExpired(), isForever(), und remainingTime().
template <typename Rep, typename Period> void QDeadlineTimer::setRemainingTime(std::chrono::duration<Rep, Period> remaining, Qt::TimerType type = Qt::CoarseTimer)
Dies ist eine überladene Funktion.
Setzt die verbleibende Zeit für dieses QDeadlineTimer Objekt auf remaining. Wenn remaining gleich Null oder negativ ist, wird dieses QDeadlineTimer Objekt als abgelaufen markiert, wohingegen, wenn remaining gleich duration::max()
ist, das Objekt so eingestellt wird, dass es nie abläuft.
Der Timer-Typ für dieses QDeadlineTimer Objekt wird auf den angegebenen type gesetzt.
Diese Funktion kann mit C++14's benutzerdefinierten Literalen für Zeit, wie z.B. in, verwendet werden:
using namespace std::chrono_literals; deadline.setRemainingTime(250ms);
Hinweis: Qt erkennt die notwendige C++14-Compilerunterstützung anhand der Feature-Test-Empfehlungen aus dem Standing Document 6 des C++ Committee.
Siehe auch setDeadline(), remainingTime(), hasExpired(), und isForever().
void QDeadlineTimer::setTimerType(Qt::TimerType timerType)
Ändert den Timer-Typ für dieses Objekt auf timerType.
Das Verhalten für jeden möglichen Wert von timerType ist betriebssystemabhängig. Qt::PreciseTimer wird den präzisesten Timer verwenden, den Qt finden kann, mit einer Auflösung von 1 Millisekunde oder besser, während QDeadlineTimer versucht, einen gröberen Timer für Qt::CoarseTimer und Qt::VeryCoarseTimer zu verwenden.
Siehe auch timerType() und Qt::TimerType.
[noexcept]
void QDeadlineTimer::swap(QDeadlineTimer &other)
Tauscht diesen Termin mit other aus. Dieser Vorgang ist sehr schnell und schlägt nie fehl.
[noexcept]
Qt::TimerType QDeadlineTimer::timerType() const
Gibt zurück, welcher Timer-Typ für dieses Objekt aktiv ist.
Siehe auch setTimerType().
QDeadlineTimer &QDeadlineTimer::operator+=(qint64 msecs)
Verlängert dieses QDeadlineTimer Objekt um msecs Millisekunden und gibt sich selbst zurück. Wenn dieses Objekt so eingestellt ist, dass es nie abläuft, tut diese Funktion nichts.
Um Zeiten mit einer Genauigkeit von mehr als 1 Millisekunde hinzuzufügen, verwenden Sie addNSecs().
QDeadlineTimer &QDeadlineTimer::operator-=(qint64 msecs)
Verkürzt dieses QDeadlineTimer Objekt um msecs Millisekunden und gibt sich selbst zurück. Wenn dieses Objekt so eingestellt ist, dass es nie abläuft, tut diese Funktion nichts.
Um Zeiten mit einer Genauigkeit von mehr als 1 Millisekunde zu subtrahieren, verwenden Sie addNSecs().
template <typename Rep, typename Period> QDeadlineTimer &QDeadlineTimer::operator=(std::chrono::duration<Rep, Period> remaining)
Setzt diesen Termin-Timer auf die Zeit remaining.
template <typename Clock, typename Duration = typename Clock::duration> QDeadlineTimer &QDeadlineTimer::operator=(std::chrono::time_point<Clock, Duration> deadline_)
Weist deadline_ diesem Termin-Timer zu.
Verwandte Nicht-Mitglieder
[noexcept]
bool operator!=(const QDeadlineTimer &lhs, const QDeadlineTimer &rhs)
Gibt true zurück, wenn die Frist auf lhs und die Frist auf rhs unterschiedlich sind, andernfalls false. Der zur Erstellung der beiden Fristen verwendete Timer-Typ wird ignoriert. Diese Funktion ist äquivalent zu:
return lhs.deadlineNSecs() != rhs.deadlineNSecs();
Hinweis: Der Vergleich von QDeadlineTimer -Objekten mit unterschiedlichen Zeitgeber-Typen wird nicht unterstützt und kann zu unvorhersehbarem Verhalten führen.
QDeadlineTimer operator+(QDeadlineTimer dt, qint64 msecs)
Gibt ein QDeadlineTimer -Objekt zurück, dessen Frist msecs nach der in dt gespeicherten Frist liegt. Wenn dt auf nie ablaufen eingestellt ist, gibt diese Funktion ein QDeadlineTimer zurück, das ebenfalls nicht abläuft.
Um Zeiten mit einer Genauigkeit von mehr als 1 Millisekunde hinzuzufügen, verwenden Sie addNSecs().
QDeadlineTimer operator+(qint64 msecs, QDeadlineTimer dt)
Gibt ein QDeadlineTimer -Objekt zurück, dessen Frist msecs nach der in dt gespeicherten Frist liegt. Wenn dt auf nie ablaufen eingestellt ist, gibt diese Funktion ein QDeadlineTimer zurück, das ebenfalls nicht abläuft.
Um Zeiten mit einer Genauigkeit von mehr als 1 Millisekunde hinzuzufügen, verwenden Sie addNSecs().
QDeadlineTimer operator-(QDeadlineTimer dt, qint64 msecs)
Gibt ein QDeadlineTimer -Objekt zurück, dessen Frist msecs vor der in dt gespeicherten Frist liegt. Wenn dt so eingestellt ist, dass es nie abläuft, gibt diese Funktion ein QDeadlineTimer zurück, das ebenfalls nicht abläuft.
Um Zeiten mit einer Genauigkeit von mehr als 1 Millisekunde zu subtrahieren, verwenden Sie addNSecs().
[noexcept]
bool operator<(const QDeadlineTimer &lhs, const QDeadlineTimer &rhs)
Gibt true zurück, wenn die Frist auf lhs vor der Frist auf rhs liegt, andernfalls false. Der zur Erstellung der beiden Fristen verwendete Timer-Typ wird ignoriert. Diese Funktion ist äquivalent zu:
return lhs.deadlineNSecs() < rhs.deadlineNSecs();
Hinweis: Der Vergleich von QDeadlineTimer Objekten mit unterschiedlichen Zeitgebern wird nicht unterstützt und kann zu unvorhersehbarem Verhalten führen.
[noexcept]
bool operator<=(const QDeadlineTimer &lhs, const QDeadlineTimer &rhs)
Gibt true zurück, wenn die Frist auf lhs vor der Frist auf rhs liegt oder mit ihr übereinstimmt, andernfalls false. Der zur Erstellung der beiden Fristen verwendete Timer-Typ wird ignoriert. Diese Funktion ist äquivalent zu:
return lhs.deadlineNSecs() <= rhs.deadlineNSecs();
Hinweis: Der Vergleich von QDeadlineTimer Objekten mit unterschiedlichen Timer-Typen wird nicht unterstützt und kann zu unvorhersehbarem Verhalten führen.
[noexcept]
bool operator==(const QDeadlineTimer &lhs, const QDeadlineTimer &rhs)
Gibt true zurück, wenn die Frist auf lhs und die Frist auf rhs gleich sind, andernfalls false. Der zur Erstellung der beiden Fristen verwendete Timer-Typ wird ignoriert. Diese Funktion ist äquivalent zu:
return lhs.deadlineNSecs() == rhs.deadlineNSecs();
Hinweis: Der Vergleich von QDeadlineTimer -Objekten mit unterschiedlichen Zeitgeber-Typen wird nicht unterstützt und kann zu unvorhersehbarem Verhalten führen.
[noexcept]
bool operator>(const QDeadlineTimer &lhs, const QDeadlineTimer &rhs)
Gibt true zurück, wenn die Frist auf lhs nach der Frist auf rhs liegt, andernfalls false. Der zur Erstellung der beiden Fristen verwendete Timer-Typ wird ignoriert. Diese Funktion ist äquivalent zu:
return lhs.deadlineNSecs() > rhs.deadlineNSecs();
Hinweis: Der Vergleich von QDeadlineTimer -Objekten mit unterschiedlichen Zeitgebern wird nicht unterstützt und kann zu unvorhersehbarem Verhalten führen.
[noexcept]
bool operator>=(const QDeadlineTimer &lhs, const QDeadlineTimer &rhs)
Gibt true zurück, wenn die Frist auf lhs später oder gleich der Frist auf rhs ist, andernfalls false. Der zur Erstellung der beiden Fristen verwendete Timer-Typ wird ignoriert. Diese Funktion ist äquivalent zu:
return lhs.deadlineNSecs() >= rhs.deadlineNSecs();
Hinweis: Der Vergleich von QDeadlineTimer Objekten mit unterschiedlichen Timer-Typen wird nicht unterstützt und kann zu unvorhersehbarem Verhalten führen.
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.