PySide6.QtCore.QDeadlineTimer¶
- class QDeadlineTimer¶
QDeadlineTimer类标记未来的截止时间。更多…概要¶
方法¶
def
__init__()def
deadline()def
deadlineNSecs()def
hasExpired()def
isForever()def
__ne__()def
__add__()def
__iadd__()def
__sub__()def
__isub__()def
__lt__()def
__le__()def
__eq__()def
__gt__()def
__ge__()def
remainingTime()def
setDeadline()def
setTimerType()def
swap()def
timerType()
静态函数¶
def
addNSecs()def
current()
注意
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。
详细描述¶
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
QDeadlineTimer类通常用于计算未来的截止时间并验证截止时间是否已过期。QDeadlineTimer也可以用于没有过期时间的截止时间(“永远”)。它与QElapsedTimer形成对比,后者计算自调用start()以来已经过去的时间。QDeadlineTimer提供了比hasExpired()更方便的 API。该类的典型用例是在相关操作开始之前创建一个
QDeadlineTimer,然后使用remainingTime()或hasExpired()来确定是否继续尝试该操作。QDeadlineTimer对象可以传递给执行此操作的函数,以便它们知道还需要操作多长时间。def executeOperation(msecs): deadline = QDeadlineTimer(msecs) do { if readFromDevice(deadline.remainingTime()): break waitForReadyRead(deadline) } while (not deadline.hasExpired())
许多
QDeadlineTimer函数处理超时值,这些值都以毫秒为单位。有两个特殊值,与许多其他名为waitFor或类似的Qt函数相同:0: 没有剩余时间,已过期
-1: 剩余时间无限,计时器永不过期
参考时钟¶
QDeadlineTimer将使用与QElapsedTimer相同的时钟(参见clockType()和isMonotonic())。定时器类型¶
与
QTimer和QChronoTimer类似,QDeadlineTimer可以在定时器中选择不同的精度级别。您可以通过将PreciseTimer传递给设置或更改定时器的函数来选择精确计时,或者通过将CoarseTimer传递给这些函数来选择粗略计时。VeryCoarseTimer目前被解释为与CoarseTimer相同的方式。此功能依赖于操作系统的支持:如果操作系统不支持粗略计时器功能,则
QDeadlineTimer将表现得像传递了PreciseTimer。QDeadlineTimer默认使用CoarseTimer,因为在支持粗略计时的操作系统上,对该时钟源进行计时调用通常效率更高。粗略程度取决于操作系统,但应该在几毫秒的范围内。`` std::chrono``
兼容性¶
QDeadlineTimer与 C++11 的std::chronoAPI 兼容,并且可以从std::chrono::duration和std::chrono::time_point对象构造或进行比较。此外,它与 C++14 的时间字面量完全兼容,允许编写如下代码:namespace = using() namespace = using() deadline = QDeadlineTimer(30s) device.waitForReadyRead(deadline) if deadline.remainingTime<nanoseconds>() > 300ms: cleanup()
如上例所示,
QDeadlineTimer提供了一个模板版本的remainingTime()和deadline(),可用于返回std::chrono对象。请注意,与
time_point进行比较不如与duration进行比较高效,因为QDeadlineTimer可能需要从其内部时钟源转换为time_point对象使用的时钟源。还要注意,由于这种转换,截止时间将不精确,因此以下代码预计不会相等:namespace = using() namespace = using() now = steady_clock::now() deadline = QDeadlineTimer(now + 1s) Q_ASSERT(deadline == now + 1s)
另请参阅
QTimeQChronoTimerQDeadlineTimerTimerType- class ForeverConstant¶
常量
描述
QDeadlineTimer.ForeverConstant.Forever
用于在创建
QDeadlineTimer时指示截止时间不应过期
- PySide6.QtCore.QDeadlineTimer.Forever¶
- __init__()¶
- __init__(type_)
- Parameters:
类型 –
TimerType
- __init__(arg__1[, type_=Qt.CoarseTimer])
- Parameters:
arg__1 –
ForeverConstanttype –
TimerType
使用
ForeverConstant创建的QDeadlineTimer对象永远不会过期。对于这样的对象,remainingTime()将返回-1,deadline()将返回最大值,而isForever()将返回true。定时器类型
timerType可能会被忽略,因为定时器永远不会过期。- __init__(msecs[, type=Qt.CoarseTimer])
- Parameters:
msecs – 整数
type –
TimerType
构造一个
QDeadlineTimer对象,如果msecs为正数,则从创建该对象的时刻起,设置一个msecs毫秒的到期时间。如果msecs为零,则此QDeadlineTimer将被标记为已过期,导致remainingTime()返回零,且deadline()返回过去的一个不确定时间点。如果msecs为负数,则计时器将设置为永不过期,导致remainingTime()返回-1,且deadline()返回最大值。QDeadlineTimer对象将使用指定的计时器type进行构造。出于优化目的,如果
msecs为零,此函数可能会跳过获取当前时间,而可能使用已知的过去值。如果发生这种情况,deadline()可能会返回一个意外的值,并且此对象不能用于计算其超时时间。如果需要此功能,请使用current()并添加时间。- static addNSecs(dt, nsecs)¶
- Parameters:
dt –
QDeadlineTimernsecs – 整数
- Return type:
返回一个
QDeadlineTimer对象,其截止时间从dt的截止时间延长了nsecs纳秒。如果dt被设置为永不过期,此函数将返回一个同样永不过期的QDeadlineTimer。注意
如果
dt被创建为已过期,其截止日期是不确定的,增加一定的时间可能会导致它变为未过期,也可能不会。返回一个已过期但保证包含当前时间的
QDeadlineTimer。通过此函数创建的对象可以使用deadline()函数参与计算计时器超时的时间。QDeadlineTimer对象将使用指定的timerType构造。- deadline()¶
- Return type:
整数
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
返回存储在
QDeadlineTimer对象中的截止日期的绝对时间点,以相对于参考时钟的毫秒数计算,与msecsSinceReference()相同。如果此QDeadlineTimer已过期,则该值将为过去的时间。如果这个
QDeadlineTimer永远不会过期,这个函数将返回std::numeric_limits。::max() 此函数可用于通过减去
current()或msecsSinceReference()来计算计时器超时的时间,如下例所示:realTimeLeft = deadline.deadline() if realTimeLeft != (std.numeric_limits<qint64>.max)(): realTimeLeft -= QDeadlineTimer.current().deadline() # or: #QElapsedTimer timer #timer.start() #realTimeLeft -= timer.msecsSinceReference()
- deadlineNSecs()¶
- Return type:
整数
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
返回存储在
QDeadlineTimer对象中的截止日期的绝对时间点,以纳秒为单位相对于参考时钟计算,与msecsSinceReference()相同。如果此QDeadlineTimer已过期,则该值将为过去的时间。如果这个
QDeadlineTimer永远不会过期,或者距离截止时间的纳秒数无法适应返回类型,此函数将返回std::numeric_limits。::max() 此函数可用于通过减去
current()来计算计时器超时的时间,如下例所示:realTimeLeft = deadline.deadlineNSecs() if realTimeLeft != std.numeric_limits<qint64>.max(): realTimeLeft -= QDeadlineTimer.current().deadlineNSecs()
- hasExpired()¶
- Return type:
布尔
如果此
QDeadlineTimer对象已过期,则返回true,如果还有剩余时间,则返回false。对于已过期的对象,remainingTime()将返回零,deadline()将返回过去的时间点。使用
ForeverConstant创建的QDeadlineTimer对象永远不会过期,因此此函数对于它们总是返回false。- isForever()¶
- Return type:
布尔
如果此
QDeadlineTimer对象永不过期,则返回true,否则返回false。对于永不过期的计时器,remainingTime()始终返回-1,而deadline()返回最大值。- __ne__(rhs)¶
- Parameters:
rhs –
QDeadlineTimer- Return type:
布尔
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
如果
lhs上的截止日期和rhs中的截止日期不同,则返回true,否则返回false。用于创建这两个截止日期的计时器类型将被忽略。此函数等同于:return lhs.deadlineNSecs() != rhs.deadlineNSecs()
注意
不支持比较具有不同计时器类型的
QDeadlineTimer对象,可能会导致不可预测的行为。- __add__(msecs)¶
- Parameters:
msecs – 整数
- Return type:
返回一个
QDeadlineTimer对象,其截止时间比存储在dt中的截止时间晚msecs。如果dt设置为永不过期,此函数返回一个同样永不过期的QDeadlineTimer。要添加精度大于1毫秒的时间,请使用
addNSecs()。- __iadd__(msecs)¶
- Parameters:
msecs – 整数
- Return type:
将此
QDeadlineTimer对象延长msecs毫秒并返回自身。如果此对象设置为永不过期,则此函数不执行任何操作。要添加精度大于1毫秒的时间,请使用
addNSecs()。- __sub__(dt2)¶
- Parameters:
dt2 –
QDeadlineTimer- Return type:
整数
- __sub__(msecs)
- Parameters:
msecs – 整数
- Return type:
返回一个
QDeadlineTimer对象,其截止时间是存储在dt中的截止时间之前的msecs。如果dt设置为永不过期,此函数返回一个同样永不过期的QDeadlineTimer。要减去精度大于1毫秒的时间,请使用
addNSecs()。- __isub__(msecs)¶
- Parameters:
msecs – 整数
- Return type:
将此
QDeadlineTimer对象缩短msecs毫秒并返回自身。如果此对象设置为永不过期,则此函数不执行任何操作。要减去精度大于1毫秒的时间,请使用
addNSecs()。- __lt__(rhs)¶
- Parameters:
rhs –
QDeadlineTimer- Return type:
布尔
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
如果
lhs上的截止时间早于rhs中的截止时间,则返回 true,否则返回 false。用于创建这两个截止时间的计时器类型将被忽略。此函数等同于:return lhs.deadlineNSecs() < rhs.deadlineNSecs()
注意
不支持比较具有不同计时器类型的
QDeadlineTimer对象,可能会导致不可预测的行为。- __le__(rhs)¶
- Parameters:
rhs –
QDeadlineTimer- Return type:
布尔
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
如果
lhs上的截止时间早于或等于rhs中的截止时间,则返回true,否则返回false。用于创建这两个截止时间的计时器类型将被忽略。此函数等同于:return lhs.deadlineNSecs() <= rhs.deadlineNSecs()
注意
不支持比较具有不同计时器类型的
QDeadlineTimer对象,可能会导致不可预测的行为。- __eq__(rhs)¶
- Parameters:
rhs –
QDeadlineTimer- Return type:
布尔
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
如果
lhs上的截止日期和rhs中的截止日期相同,则返回true,否则返回false。用于创建这两个截止日期的计时器类型将被忽略。此函数等同于:return lhs.deadlineNSecs() == rhs.deadlineNSecs()
注意
不支持比较具有不同计时器类型的
QDeadlineTimer对象,可能会导致不可预测的行为。- __gt__(rhs)¶
- Parameters:
rhs –
QDeadlineTimer- Return type:
布尔
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
如果
lhs上的截止时间晚于rhs中的截止时间,则返回 true,否则返回 false。用于创建这两个截止时间的计时器类型将被忽略。此函数等同于:return lhs.deadlineNSecs() > rhs.deadlineNSecs()
注意
不支持比较具有不同计时器类型的
QDeadlineTimer对象,可能会导致不可预测的行为。- __ge__(rhs)¶
- Parameters:
rhs –
QDeadlineTimer- Return type:
布尔
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
如果
lhs上的截止时间晚于或等于rhs中的截止时间,则返回true,否则返回false。用于创建这两个截止时间的计时器类型被忽略。此函数等同于:return lhs.deadlineNSecs() >= rhs.deadlineNSecs()
注意
不支持比较具有不同计时器类型的
QDeadlineTimer对象,可能会导致不可预测的行为。- remainingTime()¶
- Return type:
整数
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
返回此
QDeadlineTimer对象中剩余的毫秒数。如果计时器已经过期,此函数将返回零,并且无法通过此函数获取超时的时间量(要执行此操作,请参阅deadline())。如果计时器设置为永不过期,此函数返回-1。此函数适用于需要毫秒超时的Qt API,例如许多
QIODevice的waitFor函数或QMutex、QWaitCondition、QSemaphore或QReadWriteLock中的定时锁定函数。例如:mutex.tryLock(deadline.remainingTime())
- remainingTimeNSecs()¶
- Return type:
整数
返回此
QDeadlineTimer对象中剩余的纳秒时间。如果计时器已经过期,此函数将返回零,并且无法通过此函数获取超时的时间量。如果计时器设置为永不过期,此函数返回-1。设置此
QDeadlineTimer对象的截止时间为msecs绝对时间点,以毫秒为单位自参考时钟(与msecsSinceReference()相同)开始计数,并将计时器类型设置为timerType。如果该值在过去,此QDeadlineTimer将被标记为已过期。如果
msecs是std::numeric_limits或者截止时间超过了未来可表示的点,这个::max() QDeadlineTimer将被设置为永不过期。- setPreciseDeadline(secs[, nsecs=0[, type=Qt.CoarseTimer]])¶
- Parameters:
secs – 整数
nsecs – 整数
type –
TimerType
设置此
QDeadlineTimer对象的截止时间为自参考时钟纪元(与msecsSinceReference()相同)起secs秒和nsecs纳秒,并将计时器类型设置为timerType。如果该值在过去,此QDeadlineTimer将被标记为已过期。如果
secs或nsecs是std::numeric_limits,这个::max() QDeadlineTimer将被设置为永不过期。如果nsecs超过 10 亿纳秒(1 秒),那么secs将相应调整。- setPreciseRemainingTime(secs[, nsecs=0[, type=Qt.CoarseTimer]])¶
- Parameters:
secs – 整数
nsecs – 整数
type –
TimerType
设置此
QDeadlineTimer对象的剩余时间为从现在开始的secs秒加上nsecs纳秒,如果secs的值为正。如果secs为负,此QDeadlineTimer将被设置为永不过期(此行为不适用于nsecs)。如果两个参数都为零,此QDeadlineTimer将被标记为已过期。出于优化目的,如果
secs和nsecs都为零,此函数可能会跳过获取当前时间,而使用已知的过去值。如果发生这种情况,deadline()可能会返回一个意外的值,并且此对象不能用于计算其超时时间。如果需要此功能,请使用current()并添加时间。此
QDeadlineTimer对象的计时器类型将被设置为指定的timerType。注意
在 Qt 6.6 之前,导致计时器永不超时的唯一条件是当
secs为 -1 时。如果
msecs的值为正数,则将这个QDeadlineTimer对象的剩余时间设置为从现在开始的msecs毫秒。如果msecs为零,则此QDeadlineTimer对象将被标记为已过期,而负值将使其设置为永不过期。出于优化目的,如果
msecs为零,此函数可能会跳过获取当前时间,而可能使用已知的过去值。如果发生这种情况,deadline()可能会返回一个意外的值,并且此对象不能用于计算其超时时间。如果需要此功能,请使用current()并添加时间。此
QDeadlineTimer对象的计时器类型将被设置为指定的timerType。注意
在 Qt 6.6 之前,导致计时器永不超时的唯一值是 -1。
将此对象的计时器类型更改为
timerType。timerType的每个可能值的行为取决于操作系统。PreciseTimer将使用 Qt 能找到的最精确的计时器,分辨率为 1 毫秒或更好,而QDeadlineTimer将尝试为CoarseTimer和VeryCoarseTimer使用更粗糙的计时器。另请参阅
- swap(other)¶
- Parameters:
其他 –
QDeadlineTimer
将此截止时间计时器与
other截止时间计时器交换。返回此对象的计时器类型是否处于活动状态。
另请参阅