-1

我刚刚开始在 Qt 中爬行。在我的 Ubuntu 机器上安装了 qt4 并尝试了一些基本示例。现在我正在尝试开发一个多线程应用程序。首先,我很困惑是使用 pthreads 还是 Qthreads。谁能告诉我哪个更好用。?

在我的应用程序中,我会将一些值从一个线程发送到另一个线程。第二个线程将在一个框中打印这些。我的问题是,除了主线程之外的线程是否可以将小部件添加到主窗口?

4

2 回答 2

3
  1. 使用QThread. 它在pthreads内部使用,但您不依赖pthreads并且可以(可能)在其他平台和操作系统上运行您的程序。
  2. 您不能QWidget从工作线程创建实例。Qt 中只有一个 GUI 线程:运行main(). 只有这个线程可以创建与窗口管理器通信的任何东西(小部件和像素图)。

所以在线程之间,你只通信数据。GUI 线程自己管理图形用户界面,只接受来自工作线程的数据。查看 Qt 文档以了解如何实现多线程应用程序。

于 2012-10-15T12:15:16.853 回答
0

您可以使用QApplicationwhich 具有静态方法topLevelWidgets(),您可以在其中“找到”您的主要小部件之一。

像这样:

#include <QApplication>   

foreach(QWidget *widget, QApplication::topLevelWidgets())
{
    if(widget->accessibleName() == "YourMainWidgetName")
    {
        myMainTopWidget = widget;
    }
}

当您将值从一个线程发送到另一个线程时,请使用信号和插槽。它们是线程安全的并且易于使用。

于 2012-10-15T09:22:09.703 回答