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