Seite 1 von 1
QTreeView Items per Pfeiltaste selektieren
Verfasst: 24. Juni 2007 16:12
von law.skynet
hi,
ich habe wieder einmal ein kleines qtreeview problem.
ich habe 2 signale für meine qtreeview erstellt:
Code: Alles auswählen
connect(itemView, SIGNAL(clicked(const QModelIndex&)),
SLOT(showInfos(const QModelIndex&)));
connect(itemView, SIGNAL(activated(const QModelIndex&)),
SLOT(showInfos(const QModelIndex&)));
also wenn ich jetzt ein item per maus anklicke, dann bekomme ich die infos, bzw. wenn ich per pfeiltaste herumfahre und danch return klicke.
gibt es nicht ein signal das nur schon per tastendruck (pfeiltasten) die daten aktualisiert?
patrick
Verfasst: 24. Juni 2007 16:31
von ArneStocker
hi
ich glaube mit dem Signal''Activated' des QAbstractItemViews kommst du da nicht weiter. Um die Änderung der Selektion zu erfassen (egal ob mit Mausklick oder Pfeiltaste) müsstest Du auf ein Signal des SelectionsModels warten. Leider habe ich den Code jetzt nur für QtJambi/Java
Code: Alles auswählen
itemView.selectionModel().selectionChanged.connect(this,"OnSelectionChanged()");
in c++ müsste es etwa so aussehen
Code: Alles auswählen
connect(itemView->selectionModel(),
SIGNAL(selectionChanged(const QModelIndex&,const QModelIndex&)),
SLOT(showInfos(const QModelIndex&,const QModelIndex&)));
Gruß Arne
Verfasst: 25. Juni 2007 12:39
von law.skynet
danke erst mal.
aber irgendwie haut das nicht hin. ich bekomm immer den folgenden error:
Code: Alles auswählen
QObject::connect: Cannot connect (null)::currentChanged(const QModelIndex&, const QModelIndex&) to MainWindow::showMovieInfos(const QModelIndex&)
Verfasst: 25. Juni 2007 12:49
von ArneStocker
void selectionChanged ( const QItemSelection & selected, const QItemSelection & deselected )
void currentChanged ( const QModelIndex & current, const QModelIndex & previous )
der Parameter für selectionChanged ist : QItemSelection und für currentChanged : QModelIndex
so stehts zumindest in der doku
gruß arne
Verfasst: 25. Juni 2007 13:08
von law.skynet
Code: Alles auswählen
connect(itemView->selectionModel(),
SIGNAL(selectionChanged(const QItemSelection&,const QItemSelection&)),
SLOT(showInfos(const QModelIndex&)));
ändert aber auch nicht viel. es kommt immer der selbe fehler...
oder verstehe ich da etwas falsch?
Verfasst: 25. Juni 2007 13:35
von RD1978
Hi, wenn dann:
Code: Alles auswählen
connect( itemView->selectionModel(), SIGNAL( currentChanged( const QModelIndex&, const QModelIndex& ) ),
SLOT( showInfos( const QModelIndex& ) ) );
Parameter müssen vom gleichen Datentyp sein. Signale dürfen auch mehr Parameter haben wie Slots, aber nicht umgekehrt.
MfG RD1978
Verfasst: 25. Juni 2007 13:46
von ArneStocker
connect(itemView->selectionModel(),
SIGNAL(selectionChanged(const QItemSelection&,const QItemSelection&)),
SLOT(showInfos(const QModelIndex&)));
Du verwendest ja auch verschieden Typen in Signal und Slot. Probiers doch mal mit
Code: Alles auswählen
connect(itemView->selectionModel(),
SIGNAL(selectionChanged(const QItemSelection&,const QItemSelection&)),
SLOT(showInfos(const QItemSelection&)));
Gruß Arne
PS.: es kann sein, dass Du auch das SelectionsModel mal gegen NULL testen solltest. Ich weiss nicht genau, wann es eingerichtet wird, aber es könnte sein erst nach Verbinden des eigentlichen Model
Verfasst: 25. Juni 2007 14:25
von law.skynet
danke Arne!!!
das war der richtige gedankenanstoss
setModel habe ich erst später aufgerufen!
wow es funktioniert. danke nochmal an alle.
grüsse