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。
阅读(1028) | 评论(1) | 转发(0) |