QListWidget keyPressEvent

Alles rund um die Programmierung mit Qt
Antworten
the_immortal
Beiträge: 39
Registriert: 31. Mai 2006 21:21
Wohnort: CH

QListWidget keyPressEvent

Beitrag von the_immortal »

Ich will aus einem QListWidget per DELETE ein Eintrag löschen und implementiere daher die Methode keyPressEvent. Wenn ich in dem ListWidget nicht auf einen Eintrag klicke sondern sonst wohin und dann DELETE wird das Event ausgelöst. Ich muss zweimal langsam auf ein Eintrag klicken und dann DELETE um das Event auszulösen; einmal auf den Eintrag klicken reicht nicht aus.

Das QListWidgetItem hat soviel ich gesehen hab keine Events!



:roll:
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Re: QListWidget keyPressEvent

Beitrag von macman »

Ich versteh nicht ganz.
the_immortal hat geschrieben:Wenn ich in dem ListWidget nicht auf einen Eintrag klicke sondern sonst wohin und dann DELETE wird das Event ausgelöst.
Das ist doch korrekt so.
the_immortal hat geschrieben:Ich muss zweimal langsam auf ein Eintrag klicken und dann DELETE um das Event auszulösen; einmal auf den Eintrag klicken reicht nicht aus.
Häh? Was hat denn das klicken mit keyPressEvent zu tun? Im keyPressEvent guckst Du erstmal ob die richtige Taste gedrückt wurde. Dann guckst Du ob Items selektiert sind und dann werden die gelöscht. Im folgenden Beispiel ist es zwar ein QTreeWidget, aber das sollte keine Rolle spielen. OnDelete ist ein Slot, der mir die Items löscht, da man das ja meist auch per Button erledigen kann.

Code: Alles auswählen

void Dialog::keyPressEvent(QKeyEvent* event)
{
	if (event->key() != Qt::Key_Delete)
	{
		QDialog::keyPressEvent(event);
		return;
	}

	QTreeWidgetItem* item = NULL;
	QList<QTreeWidgetItem*> items = treeWidget->selectedItems();
	if (items.count()>0)
		OnDelete();
}
the_immortal
Beiträge: 39
Registriert: 31. Mai 2006 21:21
Wohnort: CH

Beitrag von the_immortal »

Die Widget List muss ja erst den Focus haben, daher der Mausklick.
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Ok, deshalb überschreibe ich auch immer keyPressEvent vom Dialog und nicht vom ListWidget :-)
the_immortal
Beiträge: 39
Registriert: 31. Mai 2006 21:21
Wohnort: CH

Beitrag von the_immortal »

macman hat geschrieben:Ok, deshalb überschreibe ich auch immer keyPressEvent vom Dialog und nicht vom ListWidget :-)
Ich habe es jetzt mal mit der KeyPress Methode vom Parent-Widget versucht, sollte wohl so ca. deinem Dialog entsprechen. Geändert hat sich jedoch nichts. Das ListWidget scheint bei einmaligem klicken auf ein Item den fokus zu verlieren.
the_immortal
Beiträge: 39
Registriert: 31. Mai 2006 21:21
Wohnort: CH

Beitrag von the_immortal »

Wenn ich im MousePressEvent des ListWidgets mit:

Code: Alles auswählen

setFocus();
fokusiere funktioniert es!
joschika77
Beiträge: 45
Registriert: 19. Mai 2006 10:36
Wohnort: an der Ostsee

Beitrag von joschika77 »

Hierzu habe ich eine Frage.Bin aber beim QTreeView QT4. Wie kann ich den keyPressedEvent auslösen/aufrufen?
Wer kann mir da helfen?

MfG
Wer Wind sät wird Sturm ernten!
joschika77
Beiträge: 45
Registriert: 19. Mai 2006 10:36
Wohnort: an der Ostsee

Beitrag von joschika77 »

Ahha hab das hier im Forum gefunden.
http://www.qtforum.de/forum/viewtopic.p ... t+treeview

MfG
Wer Wind sät wird Sturm ernten!
Antworten