Auf dieser Seite

QDeadlineTimer Class

Die Klasse „QDeadlineTimer“ legt eine Frist in der Zukunft fest. Mehr...

Header: #include <QDeadlineTimer>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core

Hinweis: Alle Funktionen dieser Klasse sind reentrant.

Vergleiche mit QDeadlineTimer

KategorieVergleichbare Typen
starkQDeadlineTimer

Ö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)
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)

Ausführliche Beschreibung

Die Klasse `QDeadlineTimer` wird in der Regel verwendet, um zukünftige Fristen zu berechnen und zu prüfen, ob die Frist bereits abgelaufen ist. `QDeadlineTimer` kann auch für Fristen ohne Ablauf („für immer“) verwendet werden. Sie bildet das 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, vor dem Start des betreffenden Vorgangs einen `QDeadlineTimer` zu erstellen und anschließend mit ` remainingTime()` oder ` hasExpired()` zu ermitteln, ob der Vorgang weiter versucht werden soll. `QDeadlineTimer`-Objekte können an Funktionen übergeben werden, die diesen Vorgang ausführen, damit diese wissen, wie lange sie noch laufen sollen.

    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 Sonderwerte, die – wie bei vielen anderen Qt-Funktionen – „ waitFor “ oder ähnlich heißen:

  • 0: keine verbleibende Zeit, abgelaufen
  • -1: unendlich viel Zeit verbleibend, der Timer läuft nie ab

Referenzuhren

QDeadlineTimer verwendet dieselbe Uhr wie „ QElapsedTimer “ (siehe QElapsedTimer::clockType() und QElapsedTimer::isMonotonic()).

Timer-Typen

Wie „ QTimer “ und „ QChronoTimer “ kann „QDeadlineTimer“ zwischen verschiedenen Grobheitsstufen der Timer wählen. Sie können eine präzise Zeitmessung auswählen, indem Sie „ Qt::PreciseTimer “ an die Funktionen übergeben, die den Timer setzen oder ändern, oder Sie können eine grobe Zeitmessung auswählen, indem Sie „ Qt::CoarseTimer “ übergeben. „ Qt::VeryCoarseTimer “ wird derzeit genauso interpretiert wie „ Qt::CoarseTimer “.

Diese Funktion hängt von der Unterstützung durch das Betriebssystem ab: Wenn das Betriebssystem keine Grobzeit-Timer-Funktionalität unterstützt, verhält sich `QDeadlineTimer` so, als wäre ` Qt::PreciseTimer ` übergeben worden.

QDeadlineTimer verwendet standardmäßig „ Qt::CoarseTimer “, da auf Betriebssystemen, die grobe Zeitmessung unterstützen, Zeitabfragen an diese Taktquelle oft wesentlich effizienter sind. Der Grad der Grobheit hängt vom Betriebssystem ab, sollte aber in der Größenordnung von einigen Millisekunden liegen.

std::chrono Kompatibilität

QDeadlineTimer ist kompatibel mit der std::chrono -API aus C++11 und kann sowohl aus std::chrono::duration - als auch aus std::chrono::time_point -Objekten erstellt oder mit diesen verglichen werden. Darüber hinaus ist er vollständig kompatibel mit den Zeitliteralen aus C++14, die es ermöglichen, Code wie den folgenden zu schreiben:

    using namespace std::chrono;
    using namespace std::chrono_literals;

    QDeadlineTimer deadline(30s);
    device->waitForReadyRead(deadline);
    if (deadline.remainingTimeAsDuration() > 300ms)
        cleanup();

Wie im obigen Beispiel zu sehen ist, bietet QDeadlineTimer eine templatisierte 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 Uhrquelle in die vom ` time_point `-Objekt verwendete Uhrquelle konvertieren muss. Beachten Sie außerdem, dass die Fristen aufgrund dieser Konvertierung nicht präzise sind, sodass der folgende Code voraussichtlich nicht zu gleichen Ergebnissen führt:

    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, QElapsedTimer und Qt::TimerType.

Dokumentation zu Mitgliedstypen

enum class QDeadlineTimer::ForeverConstant

KonstanteWertBeschreibung
QDeadlineTimer::ForeverConstant::Forever0Wird beim Erstellen eines „ QDeadlineTimer “ verwendet, um anzugeben, dass die Frist nicht ablaufen soll

Dokumentation der Member-Funktionen

[constexpr noexcept default] QDeadlineTimer::QDeadlineTimer()

[explicit constexpr noexcept] QDeadlineTimer::QDeadlineTimer(Qt::TimerType timerType)

Erstellt ein abgelaufenes „ QDeadlineTimer “-Objekt. Für dieses Objekt gibt „ remainingTime()“ den Wert 0 zurück. Ist „ timerType “ nicht festgelegt, verwendet das Objekt die „ coarse “ „ timer type “.

Der Timer-Typ „ timerType “ wird möglicherweise ignoriert, da der Timer bereits abgelaufen ist. Aus Optimierungsgründen versucht diese Funktion zudem nicht, die aktuelle Zeit abzurufen, 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 zur Berechnung der Überfälligkeitsdauer verwendet werden. Wenn diese Funktionalität benötigt wird, verwenden Sie ` QDeadlineTimer::current()`.

Siehe auch hasExpired(), remainingTime(), Qt::TimerType sowie current().

[constexpr noexcept] QDeadlineTimer::QDeadlineTimer(QDeadlineTimer::ForeverConstant, Qt::TimerType timerType = Qt::CoarseTimer)

Mit „ ForeverConstant “ erstellte „QDeadlineTimer“-Objekte laufen niemals ab. Bei solchen Objekten gibt „ remainingTime()“ den Wert -1 zurück, „ deadline()“ den Maximalwert und „ isForever()“ den Wert „true“.

Der Timer-Typ „ timerType “ kann ignoriert werden, da der Timer niemals abläuft.

Siehe auch ForeverConstant, hasExpired(), isForever(), remainingTime() und timerType().

[explicit noexcept] QDeadlineTimer::QDeadlineTimer(qint64 msecs, Qt::TimerType type = Qt::CoarseTimer)

Erstellt ein QDeadlineTimer-Objekt mit einer Ablaufzeit von msecs msecs ab dem Zeitpunkt der Erstellung dieses Objekts, sofern msecs positiv ist. Ist msecs gleich Null, wird dieser QDeadlineTimer als abgelaufen markiert, was dazu führt, dass remainingTime() den Wert Null zurückgibt und deadline() einen unbestimmten Zeitpunkt in der Vergangenheit zurückgibt. Ist ` msecs ` negativ, wird der Timer so eingestellt, dass er niemals abläuft, was dazu führt, dass ` remainingTime()` den Wert -1 und ` deadline()` den Maximalwert zurückgibt.

Das QDeadlineTimer-Objekt wird mit dem angegebenen Timer- type erstellt.

Aus Optimierungsgründen kann diese Funktion, wenn „ msecs “ Null ist, das Abrufen der aktuellen Zeit überspringen und stattdessen einen Wert verwenden, von dem bekannt ist, dass er in der Vergangenheit liegt. In diesem Fall gibt „ deadline()“ möglicherweise einen unerwarteten Wert zurück, und dieses Objekt kann nicht zur Berechnung der Überfälligkeitsdauer verwendet werden. Wenn diese Funktionalität erforderlich ist, verwenden Sie „ QDeadlineTimer::current()“ und addieren Sie Zeit dazu.

Hinweis: Vor Qt 6.6 war -1 der einzige Wert, der dazu führte, dass der Timer niemals ablief.

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)

Erstellt ein `QDeadlineTimer`-Objekt mit einer verbleibenden Zeit von ` remaining`. Ist ` remaining ` gleich Null oder negativ, wird dieses `QDeadlineTimer`-Objekt als abgelaufen markiert, während das Objekt, wenn ` remaining ` gleich ` duration::max()` ist, so eingestellt wird, dass es niemals abläuft.

Das QDeadlineTimer-Objekt wird mit dem angegebenen Timer type erstellt.

Dieser Konstruktor kann mit den benutzerdefinierten Zeitliteralen von C++14 verwendet werden, wie beispielsweise in:

    using namespace std::chrono_literals;
    QDeadlineTimer deadline(250ms);

Aus Optimierungsgründen kann diese Funktion, wenn ` remaining ` null oder negativ ist, das Abrufen der aktuellen Zeit überspringen und stattdessen einen Wert verwenden, von dem bekannt ist, dass er in der Vergangenheit liegt. In diesem Fall gibt ` deadline()` möglicherweise einen unerwarteten Wert zurück, und dieses Objekt kann nicht zur Berechnung der Überschreitungsdauer verwendet werden. Wenn diese Funktionalität erforderlich ist, verwenden Sie ` QDeadlineTimer::current()` und addieren Sie Zeit dazu.

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)

Erstellt ein QDeadlineTimer-Objekt mit einer Frist zum Zeitpunkt „ deadline “ und konvertiert dabei die Uhrquelle „ Clock “ in die interne Uhrquelle von Qt (siehe QElapsedTimer::clockType()).

Liegt deadline in der Vergangenheit, wird dieses QDeadlineTimer-Objekt als abgelaufen gesetzt; ist hingegen deadline gleich Duration::max(), wird dieses Objekt so gesetzt, dass es niemals abläuft.

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 Ablaufdatum gegenüber dem Ablaufdatum von „ dt “ um „ nsecs “ Nanosekunden verlängert wird. Wenn „ dt “ so eingestellt wurde, dass es niemals abläuft, gibt diese Funktion ein „ QDeadlineTimer “-Objekt zurück, das ebenfalls nicht abläuft.

Hinweis: Wenn „ dt “ als abgelaufen erstellt wurde, ist seine Gültigkeitsdauer unbestimmt, und das Hinzufügen einer Zeitspanne kann dazu führen, dass es wieder gültig wird – muss aber nicht.

[static noexcept] QDeadlineTimer QDeadlineTimer::current(Qt::TimerType timerType = Qt::CoarseTimer)

Gibt ein ` QDeadlineTimer ` zurück, das zwar abgelaufen ist, aber garantiert die aktuelle Uhrzeit enthält. Mit dieser Funktion erstellte Objekte können mithilfe der Funktion ` deadline()` in die Berechnung der Verspätung eines Timers einbezogen werden.

Das QDeadlineTimer -Objekt 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 bei „ QElapsedTimer::msecsSinceReference()“. Der Wert liegt in der Vergangenheit, wenn dieses „ QDeadlineTimer “ abgelaufen ist.

Wenn dieses „ QDeadlineTimer “ niemals abläuft, gibt diese Funktion „ std::numeric_limits<qint64>::max() “ zurück.

Diese Funktion kann verwendet werden, um die Zeit zu berechnen, um 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: Timer , die als abgelaufen angelegt wurden, haben einen unbestimmten Zeitpunkt in der Vergangenheit als Frist; daher funktioniert die obige Berechnung möglicherweise nicht.

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 bei „ QElapsedTimer::msecsSinceReference()“. Der Wert liegt in der Vergangenheit, wenn dieses „ QDeadlineTimer “ abgelaufen ist.

Wenn dieses ` QDeadlineTimer ` niemals abläuft oder die Anzahl der Nanosekunden bis zum Ablauftermin 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, um die ein Timer überfällig ist, indem QDeadlineTimer::current() abgezogen wird, wie im folgenden Beispiel:

    qint64 realTimeLeft = deadline.deadlineNSecs();
    if (realTimeLeft != std::numeric_limits<qint64>::max())
        realTimeLeft -= QDeadlineTimer::current().deadlineNSecs();

Hinweis: Timer , die als abgelaufen angelegt wurden, haben einen unbestimmten Zeitpunkt in der Vergangenheit als Ablaufzeit; daher funktioniert die obige Berechnung möglicherweise nicht.

Siehe auch „ remainingTime()“, „ deadline()“ und „ setDeadline()“.

[noexcept] bool QDeadlineTimer::hasExpired() const

Gibt „true“ zurück, wenn dieses „ QDeadlineTimer “-Objekt abgelaufen ist, und „false“, wenn noch Zeit verbleibt. Bei abgelaufenen Objekten gibt „ remainingTime()“ den Wert Null zurück, und „ deadline()“ gibt einen Zeitpunkt in der Vergangenheit zurück.

QDeadlineTimer Mit „ ForeverConstant “ erstellte Objekte verfallen nie, 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 niemals abläuft, andernfalls „false“. Bei Timern, die niemals 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, die Dauer der Überschreitung mit dieser Funktion zu ermitteln (siehe dazu deadline()). Wenn der Timer so eingestellt wurde, dass er niemals abläuft, gibt diese Funktion -1 zurück.

Diese Funktion eignet sich für den Einsatz in Qt-APIs, die ein Timeout in Millisekunden verwenden, wie beispielsweise die zahlreichen QIODevice - und waitFor -Funktionen oder die Funktionen für zeitgesteuerte Sperren in QMutex, QWaitCondition, QSemaphore oder QReadWriteLock. Zum 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, die Dauer der Überschreitung mit dieser Funktion zu ermitteln. Wenn der Timer so eingestellt wurde, dass er niemals 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)

Legt die Frist für dieses QDeadlineTimer -Objekt auf den absoluten Zeitpunkt msecs fest, gezählt in Millisekunden ab der Referenzuhr (entspricht QElapsedTimer::msecsSinceReference()), und den Timer-Typ auf timerType. Liegt der Wert in der Vergangenheit, wird dieses QDeadlineTimer als abgelaufen markiert.

Wenn msecs auf std::numeric_limits<qint64>::max() gesetzt ist oder die Frist über einen darstellbaren Zeitpunkt in der Zukunft hinausgeht, wird dieses QDeadlineTimer so eingestellt, dass es niemals abläuft.

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 auf die durch den Zeitpunkt deadline markierte Frist und konvertiert dabei von der Uhrquelle Clock in die interne Uhrquelle von Qt (siehe QElapsedTimer::clockType()).

Liegt deadline in der Vergangenheit, wird dieses QDeadlineTimer -Objekt auf „abgelaufen“ gesetzt; ist hingegen deadline gleich Duration::max(), wird dieses Objekt so eingestellt, dass es niemals abläuft.

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)

Legt die Frist für dieses QDeadlineTimer -Objekt auf secs Sekunden und nsecs Nanosekunden seit der Epoche der Referenzuhr fest (entspricht QElapsedTimer::msecsSinceReference()) und den Timer-Typ auf timerType. Liegt der Wert in der Vergangenheit, wird dieses QDeadlineTimer als abgelaufen markiert.

Wenn „ secs “ oder „ nsecs “ den Wert „ std::numeric_limits<qint64>::max() “ annimmt, wird „ QDeadlineTimer “ so gesetzt, dass es niemals abläuft. Wenn „ nsecs “ mehr als 1 Milliarde Nanosekunden (1 Sekunde) beträgt, 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 Laufzeit für dieses „ QDeadlineTimer “-Objekt auf „ secs “ Sekunden plus „ nsecs “ Nanosekunden ab dem aktuellen Zeitpunkt, sofern „ secs “ einen positiven Wert hat. Ist „ secs “ negativ, wird dieses „ QDeadlineTimer “ so eingestellt, dass es niemals abläuft (dieses Verhalten gilt nicht für „ nsecs “). Sind beide Parameter Null, wird dieses „ QDeadlineTimer “ als abgelaufen markiert.

Aus Optimierungsgründen kann diese Funktion, wenn sowohl secs als auch nsecs den Wert Null haben, das Abrufen der aktuellen Uhrzeit überspringen und stattdessen einen Wert verwenden, von dem bekannt ist, dass er in der Vergangenheit liegt. In diesem Fall gibt deadline() möglicherweise einen unerwarteten Wert zurück, und dieses Objekt kann nicht zur Berechnung der Überfälligkeitsdauer verwendet werden. Wenn diese Funktionalität erforderlich ist, verwenden Sie QDeadlineTimer::current() und addieren Sie 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, unter der der Timer niemals ablief, der Fall, dass secs den Wert -1 hatte.

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 dem aktuellen Zeitpunkt, sofern „ msecs “ einen positiven Wert hat. Ist „ msecs “ gleich Null, wird dieses „ QDeadlineTimer “-Objekt als abgelaufen markiert, während ein negativer Wert bewirkt, dass es niemals abläuft.

Aus Optimierungsgründen kann diese Funktion, wenn msecs gleich Null ist, das Abrufen 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 dieses Objekt kann nicht zur Berechnung der Überfälligkeitsdauer verwendet werden. Wenn diese Funktionalität erforderlich ist, verwenden Sie QDeadlineTimer::current() und addieren Sie Zeit dazu.

Der Timer-Typ für dieses „ QDeadlineTimer “-Objekt wird auf den angegebenen „ timerType “ gesetzt.

Hinweis: Vor Qt 6.6 war -1 der einzige Wert, der dazu führte, dass der Timer niemals ablief.

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)

Setzt die verbleibende Zeit für dieses „ QDeadlineTimer “-Objekt auf „ remaining “. Ist „ remaining “ gleich Null oder negativ, wird dieses „ QDeadlineTimer “-Objekt als abgelaufen markiert; ist „ remaining “ hingegen gleich „ duration::max() “, wird das Objekt so eingestellt, dass es niemals abläuft.

Der Timer-Typ für dieses QDeadlineTimer -Objekt wird auf den angegebenen type gesetzt.

Diese Funktion kann mit den benutzerdefinierten Zeitliteralen von C++14 verwendet werden, beispielsweise wie folgt:

    using namespace std::chrono_literals;
    deadline.setRemainingTime(250ms);

Dies ist eine überladene Funktion.

Siehe auch „ setDeadline()“, „ remainingTime()“, „ hasExpired()“ und „ isForever()“.

void QDeadlineTimer::setTimerType(Qt::TimerType timerType)

Ändert den Timer-Typ für dieses Objekt in „ timerType “.

Das Verhalten für jeden möglichen Wert von ` timerType ` ist betriebssystemabhängig. ` Qt::PreciseTimer ` verwendet den präzisesten Timer, den Qt finden kann, mit einer Auflösung von 1 Millisekunde oder besser, während ` QDeadlineTimer ` versucht, für ` Qt::CoarseTimer ` und ` Qt::VeryCoarseTimer` einen groberen Timer zu verwenden.

Siehe auch timerType() und Qt::TimerType.

[noexcept] void QDeadlineTimer::swap(QDeadlineTimer &other)

Ersetzt diesen Countdown-Timer durch other. Dieser Vorgang ist sehr schnell und schlägt niemals fehl.

[noexcept] Qt::TimerType QDeadlineTimer::timerType() const

Gibt den Timer-Typ zurück, der für dieses Objekt aktiv ist.

Siehe auch ` setTimerType()`.

QDeadlineTimer &QDeadlineTimer::operator+=(qint64 msecs)

Erweitert dieses „ QDeadlineTimer “-Objekt um „ msecs “ Millisekunden und gibt sich selbst zurück. Wenn für dieses Objekt festgelegt ist, dass es niemals abläuft, führt diese Funktion keine Aktion aus.

Um Zeitangaben 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 niemals abläuft, führt diese Funktion keine Aktion aus.

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)

Stellt diesen Zeitmesser auf die Zeit „ remaining “ ein.

template <typename Clock, typename Duration = typename Clock::duration> QDeadlineTimer &QDeadlineTimer::operator=(std::chrono::time_point<Clock, Duration> deadline_)

Weist diesem Fristen-Timer „ deadline_ “ zu.

Verwandte Nichtmitglieder

[noexcept] bool operator!=(const QDeadlineTimer &lhs, const QDeadlineTimer &rhs)

Gibt „true“ zurück, wenn sich die Frist in ` lhs ` und die Frist in ` rhs ` unterscheiden, andernfalls „false“. Der Timer-Typ, der zum Erstellen der beiden Fristen verwendet wurde, wird ignoriert. Diese Funktion entspricht:

    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.

QDeadlineTimer operator+(QDeadlineTimer dt, qint64 msecs)

Gibt ein ` QDeadlineTimer `-Objekt zurück, dessen Ablaufzeitpunkt ` msecs ` später liegt als der in ` dt` gespeicherte Ablaufzeitpunkt. Wenn ` dt ` auf „nie ablaufen“ gesetzt ist, gibt diese Funktion ein ` QDeadlineTimer ` zurück, das ebenfalls nicht abläuft.

Um Zeitangaben 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 Ablaufzeit „ msecs “ später liegt als die in „ dt “ gespeicherte Ablaufzeit. Wenn „ dt “ auf „never expire“ gesetzt ist, gibt diese Funktion ein „ QDeadlineTimer “-Objekt 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 Ablaufzeitpunkt „ msecs “ vor dem in „ dt “ gespeicherten Ablaufzeitpunkt liegt. Wenn „ dt “ so eingestellt ist, dass es nie abläuft, gibt diese Funktion ein „ QDeadlineTimer “-Objekt 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 unter lhs früher ist als die Frist unter rhs, andernfalls „false“. Der zum Erstellen der beiden Fristen verwendete Timer-Typ wird ignoriert. Diese Funktion entspricht:

    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 der Stichtag unter lhs früher oder gleich dem Stichtag unter rhs ist, andernfalls „false“. Der zum Erstellen der beiden Stichtage verwendete Timer-Typ wird ignoriert. Diese Funktion entspricht folgendem:

    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 unter lhs und die Frist unter rhs identisch sind, andernfalls „false“. Der zum Erstellen der beiden Fristen verwendete Timer-Typ wird ignoriert. Diese Funktion entspricht:

    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 unter lhs später ist als die Frist unter rhs; andernfalls „false“. Der zum Erstellen der beiden Fristen verwendete Timer-Typ wird ignoriert. Diese Funktion entspricht:

    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 unter lhs später oder gleich der Frist unter rhs ist, andernfalls „false“. Der beim Erstellen der beiden Fristen verwendete Timer-Typ wird ignoriert. Diese Funktion entspricht:

    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.

© 2026 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.