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::chrono
API 兼容,并且可以从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)
另请参阅
QTime
QChronoTimer
QDeadlineTimer
TimerType
- class ForeverConstant¶
常量
描述
QDeadlineTimer.ForeverConstant.Forever
用于在创建
QDeadlineTimer
时指示截止时间不应过期
- PySide6.QtCore.QDeadlineTimer.Forever¶
- __init__()¶
- __init__(type_)
- Parameters:
类型 –
TimerType
- __init__(arg__1[, type_=Qt.CoarseTimer])
- Parameters:
arg__1 –
ForeverConstant
type –
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 –
QDeadlineTimer
nsecs – 整数
- 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
截止时间计时器交换。返回此对象的计时器类型是否处于活动状态。
另请参阅