Chinaunix首页 | 论坛 | 博客
  • 博客访问: 56528
  • 博文数量: 18
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 220
  • 用 户 组: 普通用户
  • 注册时间: 2009-02-09 21:53
文章分类
文章存档

2011年(1)

2009年(17)

我的朋友

分类: LINUX

2009-02-14 00:27:19

16.QT Embedded的线程能创建并使用widget?
    QT Embedded的线程应该都看做是work thread,尽量只做与UI无关的事情,不要直接操作widget,给widget发消息调用QThread::postEvent。QT Embedded中的widget和消息队列没有线程属性的,都是属于整个进程的。因此最好只在主进程中操作widget。



17.QApplication::exec能嵌套使用吗?
  直觉上是可以的,但是从代码上看是不行的,QApplication::exec只能调用一次。

18.QThread中可以有消息循环吗?可以调用QApplication::exec吗?
  QThread中不能调用QApplication::exec,不要有消息循环,尽量只做与UI无关的事情。

19.如何阻塞住当前事件的执行,但又不阻塞住整个消息循环?
  这就是模态对话框的功能,QApplication::exec不能嵌套使用,但是消息循环可以嵌套,这个需要自已实现。QDialog::exec就是直接调用QApplication::enter_loop来嵌套一个新的消息循环,阻塞当前事件的执行,通过调用QApplication::exit_loop来退出当前的消息循环并继续执行原事件。

20.调用QApplication::enter_loop时注意什么?
  调用QApplication::enter_loop时会嵌套一个新的消息循环,具体实现可以考QDialog::exec的实现。但是QDialog的实现是有问题的,没有判断当前的loopLevel。

阅读(970) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

hxcan2009-11-16 14:49:56

好的,原来是这样的啊,模态对话框是不会阻塞整个消息循环的。