2013-04-10 62 views
0

main.cpp中:如何从按钮运行线程?

#include "mainwindow.h" 
#include "myobject.h" 
#include <QApplication> 

int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 
    MainWindow w; 
    w.show(); 

    QThread cThread; 
    MyObject cObject; 
    cObject.doSetup(cThread); 
    cObject.moveToThread(&cThread); 
    // cThread.start(); 

    return a.exec(); 
} 

mainwindow.cpp:

#include "mainwindow.h" 
#include "ui_mainwindow.h" 

MainWindow::MainWindow(QWidget *parent) : 
    QMainWindow(parent), 
    ui(new Ui::MainWindow) 
{ 
    ui->setupUi(this); 
} 

MainWindow::~MainWindow() 
{ 
    delete ui; 
} 

void MainWindow::on_pushButton_clicked() 
{ 
    // cThread.start(); 
} 

我想开始on_pushButton_clicked线程()。为了做到这一点,我必须通过参数将cThread传递给mainwindow,对吧?我只是想要有人确认,确保我做对了。

回答

0

这似乎是一种方式来做到这一点。另一个将连接信号clicked()的按钮线程的start(Priority)在您的应用程序将更好,更短。

+0

问题是,如果我这样做,那么用户可能能够启动多个线程(我有一个if语句来检查一个alreadyStarted布尔值)。有任何想法吗? – user2267771 2013-04-10 20:11:40

+0

然后你的第一个方法是正确的。无论如何,如果它是二进制状态,你可以使用checkbutton来摆脱你的支票。 – Adrian 2013-04-10 20:13:36

+0

通过checkbutton,你的意思是复选框?或者你的意思是以某种方式点击时禁用按钮? – user2267771 2013-04-10 20:15:22