2013-04-10 58 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