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
Problem mit QThread
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Re: Problem mit QThread
Wenn dem wirklich so ist dann empfehle ich nochmal die Lektüre der Doku.Diese ruft dann das run() auf und alles ist bestens.
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
'Funktioniert nicht' ist keine Fehlerbeschreibung
Re: Problem mit QThread
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.
Re: Problem mit QThread
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
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
'Funktioniert nicht' ist keine Fehlerbeschreibung
Re: Problem mit QThread
@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.
@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.
Re: Problem mit QThread
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!
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
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
'Funktioniert nicht' ist keine Fehlerbeschreibung