QThread für eine Funktion anweden?

Alles rund um die Programmierung mit Qt
Antworten
toem
Beiträge: 124
Registriert: 17. März 2009 14:01

QThread für eine Funktion anweden?

Beitrag von toem »

Ich habe ein Programm, bei dem Daten eingelesen werden. Je nach Umfang dauert dies einige Sekunden.

Wie kann ich die Funktion zum Holen der Daten in einen Thread packen, damit das Fenster in dieser Zeit bedienbar bleibt?
Ich habe in den Beispielen zu QThread hierzu nichts gefunden, das ich anwenden könnte.
Mani99
Beiträge: 244
Registriert: 15. April 2009 10:46
Wohnort: München

Beitrag von Mani99 »

Die beispiele in den examples machen aber genau das was du möchtest!

Klasse erstellen --> von QThread ableiten --> darin machen was du möchtest.

Im hauptprogramm diese klasse starten.
toem
Beiträge: 124
Registriert: 17. März 2009 14:01

Beitrag von toem »

also:

Code: Alles auswählen

class MainWindow : public QMainWindow
{
....
}

class MyThread : public QThread
{
public:
    void run();
};
So weit bin ich ja gekommen. Im CPP dann:

Code: Alles auswählen

void MyThread::run()
{
    
}
Aber wie kann ich im Run eine Funktion aus MainWindow aufrufen?

Ich bin noch dabei von C# auf C++ umzusteigen und hänge hierbei total in der Luft.
RavenIV
Beiträge: 267
Registriert: 21. Januar 2009 14:24
Wohnort: Waldshut

Beitrag von RavenIV »

in MyThread::run() kommt die Funktionalität, die Du im Thread laufen lassen möchtest.
Also das Daten einlesen.

Im MainProgramm erstellst Du dann eine Instanz von MyThread und rufst NeueInstanz.run() auf.

Alles andere solltest Du aus den Examples herleiten können.
Linux, das längste Text-Adventure aller Zeiten
pfid
Beiträge: 535
Registriert: 22. Februar 2008 16:59

Beitrag von pfid »

RavenIV hat geschrieben:in MyThread::run() kommt die Funktionalität, die Du im Thread laufen lassen möchtest.
Also das Daten einlesen.

Im MainProgramm erstellst Du dann eine Instanz von MyThread und rufst NeueInstanz.run() auf.

Alles andere solltest Du aus den Examples herleiten können.
Nein, er muss start() aufrufen.

[edit]
@TE: Wenn du in C++ noch so wenig fit bist, könntest du dir und allen Beteiligten viel Schmerzen ersparen, indem du das Thema Threads auf einen Zeitpunkt verschiebst, an dem du wenigstens gut mit C++ umgehen kannst ;)
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag von AuE »

BTW: wenn du die Daten regelmäßig einliest wäre für dich ein Threadpool und QRunnables wesentlich performanter!
pfid
Beiträge: 535
Registriert: 22. Februar 2008 16:59

Beitrag von pfid »

AuE hat geschrieben:BTW: wenn du die Daten regelmäßig einliest wäre für dich ein Threadpool und QRunnables wesentlich performanter!
Warum?
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag von AuE »

Wieviel kostet es nen Thread zu erstellen?
Wenn die Threads schon da sind ist es um einiges effizienter
Antworten