2013-04-10 2 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, чтобы проверить наличие уже начатого логического). Есть идеи? – user2267771

+0

Тогда ваш первый подход правильный. В любом случае, если это двоичное состояние, вы можете использовать checkbutton, чтобы избавиться от проверки. – Adrian

+0

С помощью checkbutton вы имеете в виду флажок? Или вы хотите каким-то образом отключить кнопку при нажатии? – user2267771

Смежные вопросы