QThread mit eigener Klasse Event Loop
-
Hallo Forum,
stehe leider vor einem kleinem Problem und zwar beschäftige ich mich etwas mit QThread. Ich wollte das Ganze auf eine GUI anwenden bekomme es leider nicht hin :-(
MainWindow.cpp:
@#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <qthreadworker.h>
#include <QThread>
#include <QDebug>MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
ui->mainToolBar->hide();
}MainWindow::~MainWindow()
{
delete ui;
}void MainWindow::on_pushButton_clicked()
{
QThread *thread = new QThread();
ThreadWorker *worker = new ThreadWorker();
worker->moveToThread(thread);
thread->start();
}@qthreadworker.h:
@#ifndef QTHREADWORKER_H
#define QTHREADWORKER_H#include <QObject>
class ThreadWorker : public QObject
{Q_OBJECT
public slots:
void run();};
#endif // QTHREADWORKER_H
@qthreadworker.cpp:
@#include "qthreadworker.h"
#include <QDebug>
#include <QThread>
#include <mainwindow.h>// Hier wird die eigentliche Arbeit durchgeführt.
void ThreadWorker::run()
{
qDebug()<<"Debug";
thread()->quit();
}
@Der QThread soll bei Button nur ein "Debug" auf die Console ausspucken für Quasi ich wurde gestartet. Leider bekomme ich auf dem qDebug() keine Ausgabe und der Compiler ärgert sich auch nicht.
Weis einer von euch wo mein Problem momentan ist?Gruß
Alex
-
Habe jetzt mal das ganze vereinfacht
MainWindow:
@#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <qthreadworker.h>
#include <QThread>
#include <QtDebug>MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
ui->mainToolBar->hide();
}MainWindow::~MainWindow()
{
delete ui;
}void MainWindow::on_pushButton_clicked()
{ThreadWorker worker; worker.start(); worker.wait();
}
@qthreadworker.h:
@#ifndef QTHREADWORKER_H
#define QTHREADWORKER_H#include <QObject>
#include <QThread>class ThreadWorker : public QThread
{Q_OBJECT
public slots:
void run();};
#endif // QTHREADWORKER_H
@qthreadworker.cpp:
@#include "qthreadworker.h"
#include <QtDebug>
#include <QThread>
#include <mainwindow.h>// Hier wird die eigentliche Arbeit durchgeführt.
void ThreadWorker::run()
{
int a = 0;for(a = 0; a <= 10000; a++) qDebug()<<a;
}
@Wie kann ich jetzt ein event loop daraus machen das er immer und immer wieder das abarbeitet?