Problem mit QThread

Alles rund um die Programmierung mit Qt
Antworten
hannes22
Beiträge: 7
Registriert: 21. Februar 2011 18:55

Problem mit QThread

Beitrag von hannes22 »

Hallo Leute,
ich hab da ein Problem und keine Ahnung wo ich suchen soll, deswegen kann ich auch nicht die relevanten Codestücke zeigen.
Also, ich habe eine Klasse (A) die braucht länger, deshalb habe ich den langwierigen Teil ausgelagert in einen QThread. Ein Objekt dieses QThreads hab ich dann in der Klasse A. Diese ruft dann das run() auf und alles ist bestens.
Nun möchte ich Statusmeldungen ausgeben, dazu nehme ich ein QListWidget und hänge mit add() die QStrings hinten an. Das passiert in der Klasse A, die Strings kommen per Signal/Slot aus dem QThread. Das funktioniert sogar - na, sagen wir halb, denn wenn das Widget-Fenster voll geschrieben ist wird keine Scrollbar erzeugt, die letzten Zeilen kann ich also nicht sehen. Ich kann eine Zeile selektieren und so mit den Cursortasten weiter nach unten scrollen aber auch nicht bis ans Ende der Liste. Hä??
Habt ihr eine Idee wo der Fehler liegen könnte.
Vielen Dank!
Hannes
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: Problem mit QThread

Beitrag von Christian81 »

Diese ruft dann das run() auf und alles ist bestens.
Wenn dem wirklich so ist dann empfehle ich nochmal die Lektüre der Doku.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
hannes22
Beiträge: 7
Registriert: 21. Februar 2011 18:55

Re: Problem mit QThread

Beitrag von hannes22 »

Das mein Problem mit run zu tun hat halte ich für unwahrscheinlich, weil es ja runnt, wie ich oben beschrieb. (Wenn dem so wäre würde ich empfehlen die Doku neu zu schreiben, denn lesen würde nicht nützen.) start() ist hier natürlich das Zauberwort. Das nutze ich aber nicht in der Klasse A, denn ich rufe start() schon im Konstruktor des QThreads. Das ist eine Endlosschleife.
comdoxx
Beiträge: 12
Registriert: 23. Februar 2012 11:36
Wohnort: Bremen

Re: Problem mit QThread

Beitrag von comdoxx »

In welchem Beispiel hattest Du gelesen, dass man start() im Konstruktor der von QThread abgeleiteten Klasse startet?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: Problem mit QThread

Beitrag von Christian81 »

Schon allein die Tatsache dass run() protected ist sollte Dich stutzig machen und untermauert meine Aussage. Man sollte in der Doku eben nicht nur die ersten zwei Zeilen lesen sondern auch (in diesem Fall) mindestens bis zur 6. - siehe http://doc.trolltech.com/4.7/qthread.html#details
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
hannes22
Beiträge: 7
Registriert: 21. Februar 2011 18:55

Re: Problem mit QThread

Beitrag von hannes22 »

@comdoxx, ich hoffe das ist nicht wichtig, denn ich kann es nicht mehr sagen. Ich hab es auch extern versucht, genau dasselbe. Jetzt wird start() also in Klasse A gerufen.

@christian81, ich bat bereits um Entschuldigung, ich hatte hier im Forum run() mit start() verwechselt. Entschuldigung! (Also streiche run setze start!) P.S. die Seite kenne ich auswendig, sie enthält keinen Hinweis auf beschriebene Fehlfunktionen. Nein nein, hier sind tiefe Kenntnisse gefragt.
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Re: Problem mit QThread

Beitrag von franzf »

Bevor man hier eigentlich weiterdiskutieren kann ist CODE notwendig, und zwar vollständiger Code, der sich kompilieren lässt und bei der Ausführung dein Problem zeigt.
Deine Beschreibungen hören sich einfach vel zu mysteriös an, als dass man daraus etwas lesen oder erahnen könnte.
Pack also dein Projekt (nur Sourcen, keine binaries, libs usw.) in ein .zip und hänge es über die Forenfunktion "Attachment" an - bitte keinen externen Downloaddienst, danke!
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: Problem mit QThread

Beitrag von Christian81 »

Dann würde ich sagen Du hast ein Problem mit den Signals/Slots da Du nicht direkt Qt::QueuedConnection angegeben hast. Aber wir franzf schon sagte - ohne Code gibts nur die Glaskugel und Vermutungen...
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Antworten