Seite 1 von 1

[gelöst]TableView mit ContextMenü

Verfasst: 9. April 2009 08:31
von nicmoe
Hi,

ich schreibe hier, weil ich schon den gesamten QtAssistant durchforstet habe. Sämtliche Beispiele habe ich schon durchgelesen und hier im Forum auch schon gesucht, aber irgendwie funktioniert es nicht, dass ich in einer von QTableView abgeleiteten Klasse ein Contextmenü mit aufrufe. Ich nutze Qt 4.4.3 und den MinGW Compiler.

Der Konstruktor der Klasse enthält bereits:

Code: Alles auswählen

TableView::TableView(QWidget * parent)
{
	/* ........... */
	setContextMenuPolicy(Qt::CustomContextMenu);
	createActions();
}
hier createActions:

Code: Alles auswählen

void TableView::createActions()
{
	actionOpen = new QAction(tr("&Öffnen"),this);
	actionAlter = new QAction(tr("&Ändern"),this);
	actionDelete = new QAction(tr("&Löschen"),this);
}
sowie noch der Eventhandler für das contextMenuEvent:

Code: Alles auswählen

void TableView::contextMenuEvent(QContextMenuEvent *event)
{
	 QMenu contextMenu(this);
	 contextMenu.addAction(actionOpen);
	 contextMenu.setDefaultAction(actionOpen);
	 contextMenu.addSeparator();
	 contextMenu.addAction(actionAlter);
	 contextMenu.addSeparator();
	 contextMenu.addAction(actionDelete);
	 contextMenu.exec(event->globalPos());
 }
kann mir irgendjemand sagen, was ich übersehen habe oder wo ich einen Fehler gemacht habe? Ich kann beim besten Willen nichts finden :( Der Compiler spuckt natürlich auch keinen Fehler aus, deswegen steh ich hier im Regen... Bitte helft mir :)

danke schonmal,
nic

Verfasst: 9. April 2009 09:53
von franzf
Tja, dann brauchst du noch etwas Übung im Assistant lesen...

Schau dir mal in aller Ruhe an, was in der Doku zu Qt::ContextMenuPolicy steht.
Qt::CustomContextMenu verwendet das Signal customContextMenuRequested(), wenn du mit dem Event arbeiten willst, musst du Qt::DefaultContextMenu setzen.

Verfasst: 9. April 2009 12:54
von nicmoe
Danke! Das hat geholfen. Ich sollte wohl noch ein wenig an meiner Lesekompetenz (so nennt man das doch heutzutage oder?) arbeiten ;)