[gelöst] QThread

Alles rund um die Programmierung mit Qt
Antworten
CSchirner
Beiträge: 63
Registriert: 14. Dezember 2006 11:05

[gelöst] QThread

Beitrag von CSchirner »

Hallo... ich habe ein Problem mit dem QThread. Und zwar war die Idee eigentlich, das ich mein Schreiben auslagern kann in einen Thread um so mein Hauptprogramm nicht zu blockieren.

Hier ist der Header des "Threads":

Code: Alles auswählen

#ifndef __THREADS_H__
#define __THREADS_H__


class WriteProcess : public QThread
{

private:
	unsigned int unAddress;
	string sString;
	Prozeda_DataStick *objDS;

public:
	void run(void);
	void setParam(unsigned int unAddress, string sString, Prozeda_DataStick *objDS);

};


#endif
Die Implementierung der Methoden schaut so aus:

Code: Alles auswählen

#include "main.h"

void WriteProcess::run()
{
	this->objDS->WriteFileToDataStick(this->unAddress, this->sString);
}

void WriteProcess::setParam(unsigned int Addr, string sStr, Prozeda_DataStick *objDS)
{
	this->unAddress = Addr;
	this->sString	= sStr;
	this->objDS		= objDS;
}
Sodalla..... in meiner Hauptklasse wird ein ojekt angelegt...

WriteProcess mProc;

und so wrid se aufgerufen

mProc.setParam(unAddress, sFile.toStdString(), this->objDS);
mProc.run();

dies scheint aber zu "blockieren".

Das Hauptformular blockiert und die Timer werden nicht mehr ausgeführt.

Ich rufe den thread in der klasse "class TestSPI : public QMainWindow", in der Methode void TestSPI::FileToDS(void) auf.

Vielen Dank schonmal für die Hilfe.

MFG
Christopher Schirner
Zuletzt geändert von CSchirner am 18. Dezember 2006 13:50, insgesamt 1-mal geändert.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

So wie Du es machst kann es nicht funktionieren - es ist so als würdest Du eine ganz normale Funktion aufrufen - und die blockiert nunmal... laut Doku ist QThread::start() die Funktion deiner Wahl.

Abgesehen davon - was soll das unsägliche std::string da? Gibt es irgend einen Grund dort nicht QString zu verwenden?
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
CSchirner
Beiträge: 63
Registriert: 14. Dezember 2006 11:05

Beitrag von CSchirner »

naja gut meinetwegen kann man n QString benutzen....


btw... woher will der wissen welche klasse ich mit QThread::start meine?

ich muss dann WriteProcess::start() aufrufen oder? ... dann sagt er aber ads ist keine statische methode etc...

das nächste ist wie kann ich dann meine "setParam" benutzen ... etc


fragen über fragen, die mich überfordern O_o
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

???
Was ist so schwer anstatt mProc.run() mProc.start() zu verwenden?
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
CSchirner
Beiträge: 63
Registriert: 14. Dezember 2006 11:05

Beitrag von CSchirner »

aso .. hups :P
Antworten