Ich habe eine Qtable mit vielen GUI-Elementen wie Combo-Boxen und Checkboxen in verschiedenen Cels erstellt. Ich kann auf diese Elemente zugreifen, indem ich Zeiger auf sie lege. Was ich wissen möchte ist, gibt es eine Möglichkeit zu wissen, welche Art von Widget (Combo-Box oder Checkbox) eine Zelle hat?
Lesen Sie die Antworten zu diese Frage . Die akzeptierte Antwort erhält den Klassennamen (als const char *) aus dem Metaobjekt des Widgets :
%Vor%Es gibt eine andere Antwort, die vorschlägt, die C ++ - Typverwaltung zu verwenden, aber das klingt viel weniger handlich (unhandlicher?).
Hoffe, das hilft!
Ich würde vorschlagen, qobject_cast
Ссылка
Es funktioniert wie dynamic_cast
, ist aber etwas besser, da es einige Qt-spezifische Annahmen treffen kann (hängt nicht von RTTI ab).
Sie können es wie folgt verwenden:
%Vor%Sie können folgende Dienstprogrammfunktionen schreiben:
%Vor% Oder vielleicht können Sie typeid
verwenden, um den Laufzeit -Typ des Objekts in der Zelle zu bestimmen.
BEARBEITEN:
Wie @Evan im Kommentar bemerkt hat, können Sie auch qobject_cast
verwenden, um das Objekt zu erstellen , anstatt dynamic_cast
. Siehe Beispiele hier .