Qt 如何从按钮运行线程?
main.cpp:Qt 如何从按钮运行线程?,qt,Qt,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(
#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();
}
我正在尝试在点击按钮()时启动线程。为了做到这一点,我必须通过一个参数将cThread传递给mainwindow,对吗?我只想有人确认一下,确保我做得对。这似乎是一种方法。另一种方法是将按钮的signal
clicked()
连接到应用程序中线程的插槽start(Priority)
,这样会更好、更短。问题是,如果我这样做,那么用户可能能够启动多个线程(我有一个if语句来检查alreadyStarted布尔值)。有什么想法吗?那么你的第一个方法是正确的。无论如何,如果它是二进制状态,你可以用checkbutton来去掉你的支票。checkbutton是指checkbox吗?或者您的意思是在单击时以某种方式禁用按钮?禁用按钮不会减少代码行数。我在想checkbutton。我不知道你说的checkbutton是什么意思,我在文档或谷歌上找不到它。
#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();
}