Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 从另一个线程向主窗口添加小部件_Qt_Qt4 - Fatal编程技术网

Qt 从另一个线程向主窗口添加小部件

Qt 从另一个线程向主窗口添加小部件,qt,qt4,Qt,Qt4,我刚开始在Qt中爬行。在我的Ubuntu机器上安装了qt4,并尝试了一些基本示例。现在我正在尝试开发一个多线程应用程序。首先,我不知道是使用pthreads还是Qthreads。谁能告诉我哪一个更好用 在我的应用程序中,我将从一个线程向另一个线程发送一些值。第二个线程将在一个框中打印这些内容。我的问题是,除了主线程之外的线程是否可以将小部件添加到主窗口?您可以使用QApplication,它有一个静态方法topLevelWidgets,您可以在其中找到一个主小部件 像这样: #include &

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

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

您可以使用QApplication,它有一个静态方法topLevelWidgets,您可以在其中找到一个主小部件

像这样:

#include <QApplication>   

foreach(QWidget *widget, QApplication::topLevelWidgets())
{
    if(widget->accessibleName() == "YourMainWidgetName")
    {
        myMainTopWidget = widget;
    }
}
当您将值从一个线程发送到另一个线程时,请使用信号和插槽。它们是线程安全的,易于使用

使用QThread。它在内部使用pthread,但您不依赖pthread,并且也可以在其他平台和操作系统上运行您的程序。 无法从工作线程创建QWidget实例。Qt中只有一个GUI线程:运行main的线程。只有这个线程可以创建与窗口管理器小部件和pixmap通信的任何东西。
因此,在线程之间,只能进行数据通信。GUI线程自己管理图形用户界面,只接受来自工作线程的数据。查看Qt文档,了解如何实现多线程应用程序。

您应该将每个问题作为单独的问题发布。