Ich arbeite mit dem Visual Studio 2005 und Qt+ Qt Designer und möchte dass über ein Thread eine externe Konsole ( im Hintergrund ) gestartet wird.
Das passiert auch soweit ganz gut, jedoch soll der Inhalt ständig in einem Label ausgegeben werden.
Gibt es dafür eine Möglichkeit außer das ganze in eine text Datei umzuleiten und diese ständig auszulesen ?
lg.
Der Code:
thread.cpp
Code: Alles auswählen
#include "thread.h"
#include "openneu.h"
Thread::Thread() {
}
void Thread::run() {
//Hier findet die eigentliche Arbeit statt
system("cmd");
}
Code: Alles auswählen
//thread.h
#ifndef THREAD_H
#define THREAD_H
#include <QThread>
#include "ui_openneu.h"
class Thread : public QThread {
Q_OBJECT
public:
Thread();
protected:
void run();
};
#endifCode: Alles auswählen
#include <QtGui>
#include "openneu.h"
#include "thread.h"
openneu::openneu(QWidget *parent, Qt::WFlags flags)
: QMainWindow(parent, flags)
{
ui.setupUi(this);
connect( ui.pushButton, SIGNAL( clicked() ),this , SLOT( eigenfunktion() ) );
connect( ui.pushButton_2, SIGNAL( clicked() ),this , SLOT( startThread1() ) );
}
openneu::~openneu()
{
}
void openneu::threadlauft() {
ui.label->setText("Thread läuft schon");
}
void openneu::threadReady() {
ui.label->setText("Thread ist fertig");
}
void openneu::startThread1()
{
if(thread1.isRunning()) {
threadlauft();
connect(&thread1, SIGNAL(finished()),
this, SLOT( threadReady())); }
else {
thread1.start(); }
// thread1.start();
}
Code: Alles auswählen
#ifndef OPENNEU_H
#define OPENNEU_H
#include <QtGui/QMainWindow>
#include "ui_openneu.h"
#include "thread.h"
class openneu: public QMainWindow
{
Q_OBJECT
public:
openneu(QWidget *parent = 0, Qt::WFlags flags = 0);
~openneu();
private:
Thread thread1;
Ui::openneuClass ui;
public slots:
void threadlauft();
void threadReady();
void startThread1();
void eigenfunktion()
{
ui.label->setText("test");
}
};
#endif // OPENNEU_HCode: Alles auswählen
#include <QtGui/QApplication>
#include "openneu.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
openneu w;
w.show();
return a.exec();
}