QEventLoopLocker Class
QEventLoopLocker 类提供了一种在不再需要事件循环时退出该循环的方法。更多内容...
| 头文件: | #include <QEventLoopLocker> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
公共函数
| QEventLoopLocker() | |
| QEventLoopLocker(QEventLoop *loop) | |
| QEventLoopLocker(QThread *thread) | |
(since 6.7) | QEventLoopLocker(QEventLoopLocker &&other) |
| ~QEventLoopLocker() | |
(since 6.7) void | swap(QEventLoopLocker &other) |
(since 6.7) QEventLoopLocker & | operator=(QEventLoopLocker &&other) |
相关的非成员
(since 6.7) void | swap(QEventLoopLocker &lhs, QEventLoopLocker &rhs) |
详细说明
QEventLoopLocker 作用于特定的对象——QCoreApplication 实例、QEventLoop 实例或QThread 实例。
这使得,例如,可以使用事件循环运行一批作业,并在最后一个作业完成后退出该事件循环。这是通过为每个作业实例保留一个 QEventLoopLocker 来实现的。
基于QCoreApplication 运行的变体允许在最后一个GUI窗口关闭后,继续完成异步运行的任务。这对于运行将数据上传至网络的任务等场景非常有用。
另请参阅 QEventLoop 和QCoreApplication 。
成员函数文档
[noexcept] QEventLoopLocker::QEventLoopLocker()
创建一个在QCoreApplication 上运行的事件锁定器。
当应用程序上不再有任何 QEventLoopLockers 运行时,只要QCoreApplication::isQuitLockEnabled() 的返回值为true ,应用程序就会尝试退出。
请注意,如果存在未关闭的窗口,或者QEvent::Quit 事件被忽略,则尝试退出并不一定会导致应用程序退出。
另请参阅 QCoreApplication::quit() 和QCoreApplication::isQuitLockEnabled()。
[explicit noexcept] QEventLoopLocker::QEventLoopLocker(QEventLoop *loop)
创建一个在loop 上运行的事件锁定器。
当该QEventLoop 上不再有任何QEventLoopLockers运行时,该 将退出。
另请参阅 QEventLoop::quit()。
[explicit noexcept] QEventLoopLocker::QEventLoopLocker(QThread *thread)
创建一个在thread 上运行的事件锁定器。
当该QThread 上不再有任何QEventLoopLockers运行时,该 将退出。
另请参阅 QThread::quit()。
[noexcept, since 6.7] QEventLoopLocker::QEventLoopLocker(QEventLoopLocker &&other)
从other 中通过Move构造一个事件循环锁定器。other 将具有一个无操作的析构函数,而防止QEventLoop/QThread/QCoreApplication 退出的责任则转移到了新对象上。
该函数在 Qt 6.7 中引入。
[noexcept] QEventLoopLocker::~QEventLoopLocker()
销毁此事件循环锁定对象
[noexcept, since 6.7] void QEventLoopLocker::swap(QEventLoopLocker &other)
将该QEventLoopLocker 对象及其状态与other 进行交换。此操作速度极快,且绝不会失败。
该函数于 Qt 6.7 中引入。
[noexcept, since 6.7] QEventLoopLocker &QEventLoopLocker::operator=(QEventLoopLocker &&other)
将此事件循环锁定器从other 中移出并分配。other 将具有一个无操作的析构函数,而防止QEventLoop/QThread/QCoreApplication 退出运行的责任则转移至该对象。
该函数在 Qt 6.7 中引入。
相关的非成员函数
[noexcept, since 6.7] void swap(QEventLoopLocker &lhs, QEventLoopLocker &rhs)
将lhs 的对象与状态与rhs 互换。此操作速度极快,且绝不会失败。
该函数在 Qt 6.7 中引入。
© 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.