我试图围绕线程和gui应用程序打包头,以便可以开始构建它们。我下载了Qt SDK,但有点丢失。使用Qt的简单线程GUI应用程序的结构是什么?
为了让我能理解这是如何工作的,我想创建一个由文本框和两个按钮组成的GUI应用程序。每个按钮都会启动一个新的线程(所以3个可以同时运行:主要的gui线程,2个按钮启动),每个按钮都可以访问文本框中的信息。我将如何设置这个应用程序?
我试图围绕线程和gui应用程序打包头,以便可以开始构建它们。我下载了Qt SDK,但有点丢失。使用Qt的简单线程GUI应用程序的结构是什么?
为了让我能理解这是如何工作的,我想创建一个由文本框和两个按钮组成的GUI应用程序。每个按钮都会启动一个新的线程(所以3个可以同时运行:主要的gui线程,2个按钮启动),每个按钮都可以访问文本框中的信息。我将如何设置这个应用程序?
看看SIGNAL和SLOTS这是Qt的基础。
完成之后,请查看QThread和QThreadPool。
此外,我建议这些要命的教程:http://www.voidrealms.com/tutorials.aspx?filter=qt
你有一个插槽连接到QPushButton点击信号,并从该插槽启动一项新的线程,如下图所示。
QPushButton *button=new QPushButton();
connect(button,SIGNAL(clicked()),this,SLOT(startthread()));
和插槽startthread将kickstart的一个工人阶级
void MyClass::startthread()
{
QThread *thread=new QThread();
WorkerClass * worker=new WorkerClass();
worker->moveToThread(thread);
thread->start()
}
凡WorkerClass将在一个单独的线程执行的新线程。
我试过这样做,我也尝试了另一个线程示例。我无法让我的线程开始似乎。我为按钮设置了一个点击事件,然后当事件触发时,我使用您在那里的代码。然后在我的工人类重写“运行”功能,我做了另一个对话框。但那个对话永远不会发生。你有什么想法为什么我的线程无法启动?在Mac上使用Windows来搞乱线程库会有什么关系吗? –
Qt小部件总是在主线程(GUI线程)中创建的......所以您不应该在单独的线程中创建小部件(QDialog)....相反,您应该只能访问其他线程中的数据并更新主线程中的gui –
这里有一个解释这个链接的链接:http://doc.qt.digia.com/4.7-snapshot/thread-basics.html –
谢谢,我正在查看视频 –