如何在Qt4睡眠

如何在Qt4睡眠,qt,qt4,Qt,Qt4,我刚刚发现在Qt4中进行sleep调用并不容易。我在Qt5中编写了一些代码,在main()和其他地方很少调用QThread::msleep()。我想将这些代码转换为Qt4,但找不到一种简单的方法来转换这些msleep调用 error: C2248: 'QThread::msleep' : cannot access protected member declared in class 'QThread' 有人建议将QThread类划分为子类。为什么我要走那么远?没有简单的方法可以只睡一会儿?您

我刚刚发现在Qt4中进行sleep调用并不容易。我在Qt5中编写了一些代码,在
main()
和其他地方很少调用
QThread::msleep()
。我想将这些代码转换为Qt4,但找不到一种简单的方法来转换这些msleep调用

error: C2248: 'QThread::msleep' : cannot access protected member declared in class 'QThread'

有人建议将QThread类划分为子类。为什么我要走那么远?没有简单的方法可以只睡一会儿?

您可以使用等待条件:

QWaitCondition wc;
QMutex mutex;
QMutexLocker locker(&mutex);
wc.wait(&mutex, milliseconds);

如果坚持睡眠,可以将QThread子类化以公开此方法:

class SleepThread : public QThread {
public: 
   static inline void msleep(unsigned long msecs) { 
       QThread::msleep(msecs);
   }
};

如果99%的情况下你需要睡眠,那就意味着你做错了什么。我知道你在说什么。我正在做一个原型。因此,我需要模拟一些尚未运行的用例。那么睡眠是有用的。看我的答案,它比互斥概念好得多。请注意,在主线程中使用各种类型的Sleep()等时,您的UI将完全阻塞。这是一个人通常不想要的东西。+1我的创意。也有点不舒服,但是嘿;)