Hallo Liste,
ich bin gerade an einem QTableWidget und versuche ihm ein KontxtMenu einzuimpfen. Mit QSignalMapper reagiere ich auf jedes Ereignis und rufe einen Slot mit einem Parameter auf.
Leider reagiert das Programm nicht auf die rechte Maustaste in der letzten Zeile. KEine Ahnung warum. Die Kontext-Taste auf der Tastatur funktioniert slebst in der letzten Zeile und des Slot wird richtig aufgerufen.
Könnt ihr mir helfen?
void startreihenfolge::contextMenuEvent(QContextMenuEvent *event)
{
int lo_item = ui->tableWidget_2->rowAt(event->pos().y() - ui->tabWidget->pos().y() - ui->tableWidget_2->pos().y() - 30);
if (lo_item)
{
if (lo_item > -1)
{
QMenu menu(this);
foreach (QString aktion, aktionen)
{
QStringList eintrag = aktion.split("::");
QAction *submenu = new QAction(eintrag[0], this);
connect(submenu, SIGNAL(triggered()), menuMapper, SLOT(map()));
menuMapper->setMapping(submenu,eintrag[1]);
menu.addAction(submenu);
}
menu.exec(event->globalPos());
}
Erni35
QTableWidget und QContextMenuEvent
Hi habe das mit dem Kontextmenü bei mir anders gelöst:
Code: Alles auswählen
QTableWidget test;
// Action erstellen
QAction *submenu = new QAction(eintrag[0], this);
// Action verbinden
test.addAction(submenu);
// Kontextmenü starten
test.setContextMenuPolicy(Qt::ActionsContextMenu);
connect(submenu, SIGNAL(triggered()), this, SLOT(Reaktion_auf_Kontext()));
test.show();
"Der erste Trunk aus dem Becher der Naturwissenschaften macht atheistisch, aber auf dem Grund des Bechers wartet Gott."
(W. Heisenberg)
(W. Heisenberg)
Re: QTableWidget und QContextMenuEvent
Ich habe eben ein ähnliches Problem gehabt.
Sachverhalt: QTableView, ich will per rechter Maustaste ein Context-Menu aufrufen, weil ich ggf. mit der Zeile, in der der Curser bei Click steht, was ändern will.
Realisiert habe ich es über das Signal customContextMenuRequested.
Dieses liefert bei Click die Maus Koordinaten (lt. Doku im Koordinatensystem des Viewports). Ich übersetze die Koordinaten daher zuerst ins Koordinatensystem des viewport-Parents. Dieses ist die Tableview selbst.
Mit der Funktion rowAt() und columnAt() hole ich mir daraus Zeile und Spalte, in die rechts geklickt wurde.
Merkwürdigerweise erhalte ich row=1, wenn ich in die oberste row Klicke und col = 0, wenn ich in die Spalte ganz links klicke. Ich hätte auch row = 0 erwartet.
Keine Ahnung warum das so ist. Deshalb funktionierte die letzte Zeile bei mir auch nicht. Die Wahrheit ist: Die 1. Zeile funktioniert nicht.
Korrigiere ich die Zeilen-Nr um 1 nach unten, dann funkionieren alle Zeilen!
Sachverhalt: QTableView, ich will per rechter Maustaste ein Context-Menu aufrufen, weil ich ggf. mit der Zeile, in der der Curser bei Click steht, was ändern will.
Realisiert habe ich es über das Signal customContextMenuRequested.
Dieses liefert bei Click die Maus Koordinaten (lt. Doku im Koordinatensystem des Viewports). Ich übersetze die Koordinaten daher zuerst ins Koordinatensystem des viewport-Parents. Dieses ist die Tableview selbst.
Mit der Funktion rowAt() und columnAt() hole ich mir daraus Zeile und Spalte, in die rechts geklickt wurde.
Merkwürdigerweise erhalte ich row=1, wenn ich in die oberste row Klicke und col = 0, wenn ich in die Spalte ganz links klicke. Ich hätte auch row = 0 erwartet.
Keine Ahnung warum das so ist. Deshalb funktionierte die letzte Zeile bei mir auch nicht. Die Wahrheit ist: Die 1. Zeile funktioniert nicht.
Korrigiere ich die Zeilen-Nr um 1 nach unten, dann funkionieren alle Zeilen!