-2

我想在我用 c++ Qt 编写的程序中暂停我的程序几秒钟。事实上,当程序到达我的一个函数时,它会停止例如 5 秒钟,然后继续下一行。我该怎么办?

该函数是类的成员函数,我想为该类的每个实例执行该工作(暂停)...

4

2 回答 2

5

如果你真的需要这样做,你有几个选择
你可以通过继承 QThread 并将它们公开来使用QThread 的方法(这些方法受到保护,因为这通常是一个坏主意) sleep

或者您可以将QEventLoop execQTimer一起使用。将计时器的信号连接到 QEventLoop 的quit()插槽。这将导致“非阻塞”等待,因此您的应用程序不会保持冻结状态。

或者,也许您应该将代码拆分为两种方法,将第二种方法设为 aslot并在适当时使用计时器调用它

编辑:类似于,在你的吃法中,你用几秒钟后QTimer::singleShot调用finishEating槽。 您可能还想阅读以下内容:http: //qt-project.org/doc/qt-5.0/qtcore/thread-basics.htmlX

于 2013-06-04T15:39:03.397 回答
4

如果您使用的是 Qt5,则可以使用以下技巧:

QMutex mut;
mut.lock();
mut.tryLock(milliseconds);
mut.unlock(); // I am not sure if this is a necessity

使用 Qt4,您可以QWaitCondition::wait()在互斥体上使用;

请记住,如果这是在您的界面线程中,您的 gui 将冻结,直到间隔结束。

于 2013-06-04T16:06:55.963 回答