6

好像QRunnable没有sleep方法。
我怎样才能像QThread::sleep在 a 中那样调用方法QRunnable

4

2 回答 2

9
  1. 不要使用平台特定的功能。Qt 的最大优点是它非常容易移植。不要毁了它sleep

  2. 您可以使用QThread::sleepfromQRunnableQtConcurent仅在Qt 5中使用,因为它在那里被声明为 public:

void QThread::sleep ( unsigned long secs ) [静态保护] // Qt 4.8

void QThread::sleep(unsigned long secs) [静态] // Qt 5.0

您可以使用 mutex 作为早期 Qt 版本的解决方法:

QMutex m(QMutex::NonRecursive);
m.lock();
m.tryLock(timeout);

互斥锁将无法递归锁定并等待超时。

于 2013-06-04T13:18:57.700 回答
3

只是简单地使用::sleep()它不在 Qt 中,它是一个 POSIX.1-2001 函数。

你也可以试试这个代码,因为QThread::sleep()调用::Sleep()

class mythreadhelper : public QThread
{
   public:
   static void mysleep(int ms)
   {
      return sleep(ms);
   }
};

诺基亚认证 Qt 开发人员在Qt 中心回答了这个问题。

于 2013-06-04T02:07:16.380 回答