Seite 1 von 1

connect mit custom QTreeWidgetItem

Verfasst: 2. März 2010 02:24
von dead-raven
Hallo,

ich habe eine von QTreeWidgetItem abgeleitete Klasse namens TreeWidgetMenuItem. Dieses Item wurde an den Baum angefügt.
Wenn das Item nun angeklickt wird, so soll ein entsprechender Slot aufgerufen werden und diesem das TreeWidgetMenuItem übergeben werden.
Das Problem ist, dass der Parameter des entsprechenden Signals vom Typ QTreeWidgetItem ist:

Code: Alles auswählen

connect(menuTreeWidget, SIGNAL(itemClicked(QTreeWidgetItem*,int)), this, SLOT(changePage(QTreeWidgetItem*,int)));
Nun habe ich es folgendermaßen gelöst, was mir allerdings nicht besonders gefällt:
ich übergebe TreeWidgetMenuItem als QTreeWidgetItem und wandel es in der Slot-Prozedur wieder in ein TreeWidgetMenuItem um, um die entsprechenden Klassenmethoden verwenden zu können:

Code: Alles auswählen

void MainWindow::changePage(QTreeWidgetItem *item, int column){
    Q_UNUSED(column);
    TreeWidgetMenuItem *menuItem = static_cast<TreeWidgetMenuItem*>(item);
    qDebug() << menuItem->getItemName();
}
Gibt es einen anderen / eleganteren Lösungsweg?

gruß
DeaD-RaveN

Verfasst: 2. März 2010 06:28
von Christian81
ich würde dynamic_cast bzw. qobject_cast bevorzugen.