• 4527阅读
  • 6回复

signal --- slot [复制链接]

上一主题 下一主题
离线rlingxing
 
只看楼主 倒序阅读 楼主  发表于: 2011-11-10
关键词: signalslot界面
    mainform w;
    w.psetup = new setup();
    w.connect( w.psetup, SIGNAL(current_weather(int)), &w, SLOT(showMainWeather(int)));
    请教:为什么调用emit( current_weather(weather_type) ); 之后程序停顿一下。
        
    void mainform::showMainWeather( int )它处理了一张图。
    怎么样能让showMainWeather()在后台运行,它emit( current_weather(weather_type))不停顿?????
离线summerpeking
只看该作者 1楼 发表于: 2011-11-10
加入多线程怎么样?qt的多线程我还没用过,不过感觉似乎还是可以的吧!
离线jdwx

只看该作者 2楼 发表于: 2011-11-10
引用第1楼summerpeking于2011-11-10 18:55发表的  :
加入多线程怎么样?qt的多线程我还没用过,不过感觉似乎还是可以的吧!

建议使用QThread,多线程处理图片,主界面就不卡了
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线rlingxing
只看该作者 3楼 发表于: 2011-11-11
回 2楼(jdwx) 的帖子
QThread 我没用过,我用的是qt3.3.8的,请问你有例子吗?
qt4与qt3有线程是很大不同的
QThread本身是继承于QObject的,为线程间的signal-slot机制打下了基础(Qt4),而qt3的线程不是继承于QObject,不能在线程间使用signal-slot机制(如QObject::connect(Thread, SIGNAL(Log(QString)), this, SLOT(Logslots(QString)))不能应用在qt3中,只能应用在qt4中)

如果不用多线程,一般是通过QApplication的消息循环来处理的 。问一下,用事件处理行吗。

离线jdwx

只看该作者 4楼 发表于: 2011-11-11
回 3楼(rlingxing) 的帖子
Qt3需要传递自定义消息通信(C++ GUI Qt3书里有详细的说明),Qt3的信号和槽确实不能用在多线程。
但是为什么不用Qt4,很快就会有Qt5了。
如果不用多线程,只有一个主线程,一个耗时的操作肯定会卡住界面。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线myer

只看该作者 5楼 发表于: 2011-11-11
用qApp->postEvent()
emit( current_weather(weather_type) ); 是同步处理,相当于同步的、随机的调用所有关联的slot函数。
http://user.qzone.qq.com/56430808
离线rlingxing
只看该作者 6楼 发表于: 2011-11-14
谢谢 4楼jdwx 和  5楼myer。 这个问题 用异步事件处理了!
快速回复
限100 字节
 
上一个 下一个