Seite 1 von 1

QListWidget keyPressEvent

Verfasst: 12. Juni 2006 11:31
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:

Re: QListWidget keyPressEvent

Verfasst: 12. Juni 2006 12:10
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();
}

Verfasst: 12. Juni 2006 12:19
von the_immortal
Die Widget List muss ja erst den Focus haben, daher der Mausklick.

Verfasst: 12. Juni 2006 12:30
von macman
Ok, deshalb überschreibe ich auch immer keyPressEvent vom Dialog und nicht vom ListWidget :-)

Verfasst: 12. Juni 2006 12:39
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.

Verfasst: 12. Juni 2006 12:53
von the_immortal
Wenn ich im MousePressEvent des ListWidgets mit:

Code: Alles auswählen

setFocus();
fokusiere funktioniert es!

Verfasst: 21. Juni 2006 14:38
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

Verfasst: 21. Juni 2006 15:35
von joschika77
Ahha hab das hier im Forum gefunden.
http://www.qtforum.de/forum/viewtopic.p ... t+treeview

MfG