Hi,
ich habe für eine Tabelle QTable folgenden Connect erstellt:
connect( myTable, SIGNAL( valueChanged(int, int) ) , this, SLOT( autoExpand(int, int) ));
der SLOT autoExpand wird weiter unten implementiert.
Nun ist es ja bei dem SIGNAL valueChanged so, dass als Parameter nur (int col, int row) übergeben werden.
Ich habe in meiner Anwendung allerdings zwei verschiedene Tabellen und möchte meine SLOT-Funktion autoExpand nur EINMAL schreiben, d.h. ich suche nach einer Möglichkeit, unabhängig vom Sender diese Funktion zu schreiben.
Konkret: Die Funktion soll Werte in einer Tabelle selbständig ändern, aber dazu muss sie ja erstmal wissen, in WELCHER Tabelle sie dies tun kann: Aber es wird ja durch das SIGNAL kein Pointer auf eine Tabelle weitergegeben.
Was also passieren soll ist dieses:
void autoExpand (int col, int row) {
table = Die Tabelle, von der das Signal emitiert wurde
table->setItem(row, col, item) bzw. table->setText(row, col, QString)
}
Ich hoffe, ihr konntet mir folgen. 8)
Wie kann ich mein Problem am besten lösen?
Wie sähe eine geeignete SLOT/SIGNAL-Funktion aus?
Vielen Dank!
Signal/Slot bei QTable mit valueChanged
-
GeorgGentoo
- Beiträge: 6
- Registriert: 13. Dezember 2004 23:09
- Wohnort: DE / Karlsruhe
Hallo
Es gibt unter QObject ein Function sender die dir einen Pointer auf den Sender liefert
http://doc.trolltech.com/3.3/qobject.html#sender
damit solltest du dann in deinem Slot testen könne von welchem Object also konkret von welcher Tabelle dein Signal kommt, aber vorsicht ruftst du die Funktion normal auf ohne Signal dann ist der Sender nicht definiert
gandalf
p.s benutz bitte für code die Code Tags macht das alles etwas übersichtlicher[/url]
Es gibt unter QObject ein Function sender die dir einen Pointer auf den Sender liefert
http://doc.trolltech.com/3.3/qobject.html#sender
damit solltest du dann in deinem Slot testen könne von welchem Object also konkret von welcher Tabelle dein Signal kommt, aber vorsicht ruftst du die Funktion normal auf ohne Signal dann ist der Sender nicht definiert
gandalf
p.s benutz bitte für code die Code Tags macht das alles etwas übersichtlicher[/url]
benutzte QT 3.2 nc auf w2k
-
GeorgGentoo
- Beiträge: 6
- Registriert: 13. Dezember 2004 23:09
- Wohnort: DE / Karlsruhe
Hallo gandalf,
danke für Deine Antwort, ich glaube, genau nach so einer Funktion habe ich gesucht!
Nun habe ich innerhalb meiner Slot-Funktion folgende Zeile untergebracht:
... diese ist zunächst syntaktisch korrekt, jedoch gibt's beim Kompilieren einen Fehler, weil meine Funktionen, die ich über dem sender ausführen möchte, "natürlich" nicht gefunden werden können:
Wie ist das richtig zu stellen?
Danke
[/code]
danke für Deine Antwort, ich glaube, genau nach so einer Funktion habe ich gesucht!
Nun habe ich innerhalb meiner Slot-Funktion folgende Zeile untergebracht:
Code: Alles auswählen
const QObject *sender = QObject::sender();Code: Alles auswählen
sender->setText(i,j, "foo")Danke
-
GeorgGentoo
- Beiträge: 6
- Registriert: 13. Dezember 2004 23:09
- Wohnort: DE / Karlsruhe