2012-10-15 63 views
1

我试图围绕线程和gui应用程序打包头,以便可以开始构建它们。我下载了Qt SDK,但有点丢失。使用Qt的简单线程GUI应用程序的结构是什么?

为了让我能理解这是如何工作的,我想创建一个由文本框和两个按钮组成的GUI应用程序。每个按钮都会启动一个新的线程(所以3个可以同时运行:主要的gui线程,2个按钮启动),每个按钮都可以访问文本框中的信息。我将如何设置这个应用程序?

回答

1

你有一个插槽连接到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将在一个单独的线程执行的新线程。

+0

我试过这样做,我也尝试了另一个线程示例。我无法让我的线程开始似乎。我为按钮设置了一个点击事件,然后当事件触发时,我使用您在那里的代码。然后在我的工人类重写“运行”功能,我做了另一个对话框。但那个对话永远不会发生。你有什么想法为什么我的线程无法启动?在Mac上使用Windows来搞乱线程库会有什么关系吗? –

+0

Qt小部件总是在主线程(GUI线程)中创建的......所以您不应该在单独的线程中创建小部件(QDialog)....相反,您应该只能访问其他线程中的数据并更新主线程中的gui –

+0

这里有一个解释这个链接的链接:http://doc.qt.digia.com/4.7-snapshot/thread-basics.html –

相关问题