基本的QT事件处理/线程问题?

时间:2010-05-27 05:13:20

标签: multithreading qt events event-handling qt4

问候, 我是QT(4.6)的新手并且对它的事件机制有一些基本的问题。我来自Swing背景所以我试图将它与QT进行比较。

1)事件处理循环是否在单独的线程中运行? (比如Swing中的EventDispatch线程)?

2)如果我们打开几个'QMainWindow'它们会在多个线程中运行吗?

3)在单独的线程中运行密集型流程的最佳方法是什么? (比如Swing中的SwingWorker?)

4)如果intesive-process在一个单独的线程中运行,是否可以从该进程调用诸如update(),repaint()之类的UI方法?

提前感谢。

1 个答案:

答案 0 :(得分:3)

1在同一个线程中运行的事件循环

2所有UI元素都与执行main()函数的线程位于同一个线程中。

3有QThread类允许你有一个带有单独事件循环的线程。有QRunable抽象类可以使用QThreadPool在不同的线程中运行重复的长时间运行任务。

4 update()和repaint()是插槽,从单独的线程调用它们的最佳方法是使用排队连接与对象中的信号,该信号位于单独的线程中(读取QObject :: connect文档和关于连接类型)

通过阅读我提到的课程文档,您可以找到所有必要的信息。