当前位置: 代码迷 >> QT开发 >> 求常识性小疑点一个
  详细解决方案

求常识性小疑点一个

热度:20   发布时间:2016-04-25 04:19:18.0
求常识性小问题一个。
我在非QThread子类中,需要 sleep() ,用什么方法呀?

QThread 把 sleep 定义成  protected 了,不能直接用。

我现在想在 QRunnable 的子类中使用。



别告诉我直接用 winapi ,我想跨平台。

更别告诉我继承一个 QThread , 把 sleep 再 public 一下...

应该有更直接的方法吧?
------最佳解决方案--------------------
不是有qSleep ( int ms )这个函数么?
------其他解决方案--------------------
围观楼主纠结的问题
------其他解决方案--------------------
主线程发信号给 子线程,
子线程的slot 里面调用sleep()..
------其他解决方案--------------------
~~>_<~~~泪奔。。。哦。。QRunable。。。不是继承自QObject.收不到信号。。我错了。。
------其他解决方案--------------------
mark……

建议看看 C++ GUI Qt4编程 一书中线程一章,依稀记得好像有类似问题的答案
------其他解决方案--------------------
可以考虑直接封装本地接口的sleep就行
大概形式如下

void mySleep(int milseconds )
{
#ifdef _WIN32
   #include <windows.h>
    sleep(milseconds)
#else
   #include <unistd.h>
    usleep(1000*milseconds)
#endif 
}
------其他解决方案--------------------
引用:
引用:~~>_<~~~泪奔。。。哦。。QRunable。。。不是继承自QObject.收不到信号。。我错了。。

其实我发现用 signals ... slots ,信号接收到的不是同一个线程,Qt好象重建了一个线程去执行信号的。
所以在技术上,你这个方式不可行的。
在哪里发现的。求源码出处~

我在源码里面看到的,跨线程里的signal slot是通过postEvent来的。
------其他解决方案--------------------
贴出来~我没看到呢。。
------其他解决方案--------------------
引用:
可以考虑直接封装本地接口的sleep就行
大概形式如下

void mySleep(int milseconds )
{
#ifdef _WIN32
   #include <windows.h>
    sleep(milseconds)
#else
   #include <unistd.h>
    usleep(1000*milseconds)……


顶,要疗效不要纠结
------其他解决方案--------------------
引用:
主线程发信号给 子线程,
子线程的slot 里面调用sleep()..


哈......超级大傻帽的解决方案。

------其他解决方案--------------------
引用:
~~>_<~~~泪奔。。。哦。。QRunable。。。不是继承自QObject.收不到信号。。我错了。。


其实我发现用 signals ... slots ,信号接收到的不是同一个线程,Qt好象重建了一个线程去执行信号的。
所以在技术上,你这个方式不可行的。
------其他解决方案--------------------
引用:
引用:引用:~~>_<~~~泪奔。。。哦。。QRunable。。。不是继承自QObject.收不到信号。。我错了。。

其实我发现用 signals ... slots ,信号接收到的不是同一个线程,Qt好象重建了一个线程去执行信号的。
所以在技术上,你这个方式不可行的。在哪里发现的。求源码出处~……


引用:
引用:引用:~~>_<~~~泪奔。。。哦。。QRunable。。。不是继承自QObject.收不到信号。。我错了。。

其实我发现用 signals ... slots ,信号接收到的不是同一个线程,Qt好象重建了一个线程去执行信号的。
所以在技术上,你这个方式不可行的。在哪里发现的。求源码出处~……


程序跟踪到的,试过很多个了。
包括 invokeMethod 也是。你可以试试。
  相关解决方案