QT: Objektzugriff von einem anderem Obejekt aus

Gast #2823977
Lesenswert?

Hallo,
ich habe eine GUI mit QT gestaltet.
In der GUI gibt es ein selbsterstelltes Objekt (Picdisplay), das Bilder 
anzeigt, dieses Objekt soll den Text eines Labels (Label) ändern können. 
Die zwei Objekte kennen sich nicht.
(Mit ui->Label->setText(„Test“) geht es nicht).
Wie kann ich die 2 Objekte bekannt machen, so, dass das Bildobjekt den 
Text auf das Label schreiben kann.

Vielen Dank im Voraus.
Angehängte Dateien:
#2824005
Lesenswert?

Loopy schrieb:
> Hallo,
> ich habe eine GUI mit QT gestaltet.
> In der GUI gibt es ein selbsterstelltes Objekt (Picdisplay), das Bilder
> anzeigt, dieses Objekt soll den Text eines Labels (Label) ändern können.
> Die zwei Objekte kennen sich nicht.
> (Mit ui->Label->setText(„Test“) geht es nicht).
> Wie kann ich die 2 Objekte bekannt machen, so, dass das Bildobjekt den
> Text auf das Label schreiben kann.

So wie das in QT vorgesehen ist.
Das eine Objekt sendet ein Signal aus, das andere hat einen Slot, in dem 
es das Signal auffängt.

Auf deutsch: Das Picdisplay brüllt in den Raum "Ich hab da was". Und 
unter anderem reagiert dein Label (da wirst du dir noch eine Klasse 
dafür machen müssen) auf diesen ungerichteten Zuruf.
Gast #2824062
Lesenswert?

Wo ist der Quellcode? Ruhig ein Minimalbeispiel, wo der Fehler aber auch 
auftritt.

Ansonsten:
Das connect muss in einer Ebene sein, wo beide Objekte bekannt sind.

Bsp:
picdisplay und label werden in der main.cpp erzeugt, also kannst hier 
mit dem connect-Befehl eine Verbindung herstellen.
1
QObject::connect(picdisplay, SIGNAL(setLabel(QString)),
2
                 label,SLOT(getLabel(QString)));

Für Signals-Slots musst du in der Klassen-Definitonen noch Q_OBJECT mit 
einpflegen.
Das steht aber auch alles in der "QObject Class Reference" im "Qt 
Assistant" drin. Wenn das Q_OBJECT gefehlt hat, ruhig einen qmake-Befehl 
mal abfeuern, wobei ich nie mit VS in Verbindung mit Qt gearbeitet habe.
Der QtCreator ist mir da viel sympatischer.

Ansonsten, ein Signal wird nur deklariert, es ist ja nur ein Funktions- 
bzw. Methoden-Prototyp!
Siehe "Signals & Slots" widerrum im "Qt Assistant".
Aber ohne (Minimal-)Beispiel wird hier eh nur intensivst geraten. ;-)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren