首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > QT开发 >

求常识性小疑点一个

2012-12-15 
求常识性小问题一个。我在非QThread子类中,需要 sleep() ,用什么方法呀?QThread 把 sleep 定义成protected

求常识性小问题一个。
我在非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 也是。你可以试试。



[其他解释]

引用:
贴出来~我没看到呢。。


这有什么代码可贴?
你用QThread::currentThreadId() 可以看到,我看到的句柄值是不一样的。

我用的是 QtSDK 4.8.1 的。自带的GCC4.4

热点排行