我刚开始在Qt爬行。在我的Ubuntu机器上安装了qt4并尝试了一些基本的例子。现在我正在尝试开发一个多线程应用程序。首先,我很困惑是使用pthreads还是Qthreads。有人能告诉我哪一个更好用。?
此外,在我的应用程序中,我将从一个线程向另一个线程发送一些值。第二个线程将打印在一个框中。我的查询是,主线程以外的线程是否可以将小部件添加到主窗口?
答案 0 :(得分:3)
QThread
。它在内部使用pthreads
,但您不依赖于pthreads
,并且可以(可能)在其他平台和操作系统上运行您的程序。QWidget
个实例。 Qt中只有一个GUI线程:运行main()
的线程。只有这个线程可以创建任何与窗口管理器(窗口小部件和像素图)通信的东西。因此,在线程之间,您只能传递数据。 GUI线程自己管理图形用户界面,只接受来自工作线程的数据。查看有关如何实现多线程应用程序的Qt文档。
答案 1 :(得分:0)
您可以使用QApplication
,其中包含一个静态方法topLevelWidgets()
,您可以在其中找到一个主要小部件。
像这样:
#include <QApplication>
foreach(QWidget *widget, QApplication::topLevelWidgets())
{
if(widget->accessibleName() == "YourMainWidgetName")
{
myMainTopWidget = widget;
}
}
当您将值从一个线程发送到另一个线程时,请使用信号和插槽。它们是线程安全且易于使用的。