Dialog mit Qthread überladen funktioniert nicht

Alles rund um die Programmierung mit Qt
Antworten
pospiech
Beiträge: 232
Registriert: 1. September 2006 17:20
Wohnort: Hannover

Dialog mit Qthread überladen funktioniert nicht

Beitrag von pospiech »

Wenn ich folgendes mache:

Code: Alles auswählen

class DialogGratingPeriodVariation : public QDialog, protected Ui_DialogGratingPeriodVariation , protected QThread
dann werden alle connect Anweisungen nicht mehr erkannt

Code: Alles auswählen

1>.\src\DialogGratingPeriodVariation.cpp(45) : error C2594: 'Argument': Mehrdeutige Konvertierung von 'DialogGratingPeriodVariation *const ' in 'const QObject *'
1>.\src\DialogGratingPeriodVariation.cpp(45) : error C3861: "connect": Bezeichner wurde nicht gefunden.
1>.\src\DialogGratingPeriodVariation.cpp(46) : error C2385: Mehrdeutiger Zugriff von "connect".
1>        könnte "connect" in Basis "QObject" sein
1>        oder könnte "connect" in Basis "QObject" sein
Wie binde ich dann einen Thread in einen Dialog ein? Ich will natürlich nicht den Dialog selber in einen eigenen Thread packen, sondern eine Funktion innerhalb des Dialogs.

Matthias
Sephral
Beiträge: 201
Registriert: 1. Februar 2006 09:40
Kontaktdaten:

Beitrag von Sephral »

Hallo,

warum erzeugst du Deinen Thread nicht einfach im Konstruktor des Dialogs oder erst wenn du ihn brauchst (Knopf wird gedrückt oder was auch immer)?


Ciao,
Sephral
ConfusedSushi
Beiträge: 57
Registriert: 18. Januar 2008 16:46
Wohnort: Berlin

Beitrag von ConfusedSushi »

das kann nicht funktionieren,

multiple inheritance von mehreren QObjects wird nicht unterstützt.
pospiech
Beiträge: 232
Registriert: 1. September 2006 17:20
Wohnort: Hannover

Beitrag von pospiech »

Sephral hat geschrieben:Hallo,
warum erzeugst du Deinen Thread nicht einfach im Konstruktor des Dialogs oder erst wenn du ihn brauchst (Knopf wird gedrückt oder was auch immer)?
wie soll den das gehen? Die Klasse in der die run() Funktion steht muss doch von QThread abgeleitet sein.
PeterLustig
Beiträge: 386
Registriert: 21. November 2007 20:07

Beitrag von PeterLustig »

Du weißt schon das du _keinerlei_ GUI Operationen außerhalb des Main-Threads durchführen darfst, oder?
pospiech
Beiträge: 232
Registriert: 1. September 2006 17:20
Wohnort: Hannover

Beitrag von pospiech »

PeterLustig hat geschrieben:Du weißt schon das du _keinerlei_ GUI Operationen außerhalb des Main-Threads durchführen darfst, oder?
Was meinst du damit? Dass ich keinen Dialog in einem anderen Thread laden kann?

Ich möchte an einen Dialog der Bilder darstellt kontinuierlich welche übergeben. Da das ganze in einer For schleife abläuft ist solange die restliche GUI blockiert. Genau das möchte ich umgehen.
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Es gibt eine Doku zu QThread und es gibt passende Beispiele in der Doku, die würde ich mir mal ansehen...
PeterLustig
Beiträge: 386
Registriert: 21. November 2007 20:07

Beitrag von PeterLustig »

Du kannst das Bild in einem Dialog nicht aus einem anderen Thread heraus ändern. Wie ich schon sagte, du darfst _KEINE_ GUI relevanten Operationen aus einem anderen Thread heraus ausführen. Steht auch in der Dokumentation zu den Threads.
In GUI applications, the main thread is also called the GUI thread because it's the only thread that is allowed to perform GUI-related operations.
pospiech
Beiträge: 232
Registriert: 1. September 2006 17:20
Wohnort: Hannover

Beitrag von pospiech »

upsala hat geschrieben:Es gibt eine Doku zu QThread und es gibt passende Beispiele in der Doku, die würde ich mir mal ansehen...
Ich habe schon Threads mit QThread programmiert und sehe nicht wo mir die Doku meine Frage bzgl der GUI in eigenen Threads beantwortet. Aber ich habe inwzischen in einem Qt4 Buch nachgelesen, das alles was ein widget enthält nicht in einen Thread darf. Nur leider taucht das Wort Widget nicht in der Doku zu QThread auf.

Naja, dann kann alles der letzten Stunden wieder umprogrammieren. Aber Danke für den Hinweis, ich wäre an den Fehlermeldungen wohl verzweifelt.
PeterLustig
Beiträge: 386
Registriert: 21. November 2007 20:07

Beitrag von PeterLustig »

Schau dir mal mein Zitat an. Zu was glaubst du gehört ein Widget erstellen? Natürlich zu GUI-related operations. :>
pospiech
Beiträge: 232
Registriert: 1. September 2006 17:20
Wohnort: Hannover

Beitrag von pospiech »

PeterLustig hat geschrieben:Schau dir mal mein Zitat an. Zu was glaubst du gehört ein Widget erstellen? Natürlich zu GUI-related operations. :>
Ich habe mich doch für den Hinweis von dir bedankt.
Und dein Zitat kann ich in http://doc.trolltech.com/4.3/qthread.html nicht wiederfinden.
PeterLustig
Beiträge: 386
Registriert: 21. November 2007 20:07

Beitrag von PeterLustig »

Assistant öffnen -> Im Index nach "Thread" suchen -> Thread Support in Qt
Sephral
Beiträge: 201
Registriert: 1. Februar 2006 09:40
Kontaktdaten:

Beitrag von Sephral »

Was du machen willst lässt sich vermutlich mit einem einfachen Timer realisieren. Wenn Du die Bilder vorher aufbereiten musst, kann das ein eigener Thread machen, der Thread schickt die Bilder (bzw- Referenzen auf einen gemeinsamen Datenspeicher) dann per Signal/Slot an den GUI-Thread der das Bild letztendlich zur Anzeige bringt.
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Beitrag von solarix »

pospiech hat geschrieben: Und dein Zitat kann ich in http://doc.trolltech.com/4.3/qthread.html nicht wiederfinden.
siehe allgemeine Einführung:
http://doc.trolltech.com/4.4/threads.html
Antworten