Archiv verlassen und diese Seite im Standarddesign anzeigen : Qt: Lokaler QAccel
peschmae
12-11-2004, 10:06
Moin,
wenn ich einen QAccel definiere dann ist der ja immer für die ganze Applikation. Nun möchte ich aber einen, der davon abhängt wo die Maus gerade ist.
D.h. der Befehl wird dann quasi "auf" das Widget angewandt über dem die Maus gerade ist (sind alles Buttons).
(Ein & in den Titel geht hier nicht weil ich auf einen Button mehrere Shortcuts definieren möchte - gewissermassen für alle Einträge im Kontextmenü des Buttons einen Shortcut)
MfG Peschmä
anda_skoa
13-11-2004, 17:51
Ist das jetzt in einem Kontextmenü, oder allgemein immer gültig?
Ciao,
_
peschmae
13-11-2004, 19:06
Das ist ein Kontextmenü. Ich möchte einfach die Aktionen dort drin auch via Shortcuts ausführen können.
MfG Peschmä
anda_skoa
13-11-2004, 19:46
Wenn es ein modale Kontextmenü ist, also mit exec() gestartet wurde, solltest du im Slot eh noch die Information haben, auf welchem Button es geöffnet wurde.
Wenn es nicht modal ist, könntest du eine QPopupMenu Subklasse benutzen und vor dem Popup über eine Methode den Pointer auf das Widget in einer Variable davon speichern.
Ciao,
_
peschmae
14-11-2004, 08:59
Es ist modal:
void WatchButton::contextMenuEvent(QContextMenuEvent* e) {
QPopupMenu contextMenu(this);
Q_CHECK_PTR(&contextMenu);
contextMenu.insertItem(tr("&Add new item"), this, SIGNAL(add()), CTRL+Key_A );
contextMenu.insertItem(tr("&Remove item"), this, SLOT(remove()), CTRL+Key_R );
...
contextMenu.exec(e->globalPos());
e->accept();
}
Nur verstehe ich nicht ganz wie das jetzt geht damit die Tastenkürzel funktionieren.
MfG Peschmä
anda_skoa
14-11-2004, 10:17
Probier es mal mit zwei QActions statt dem direkten insertItem
Ciao,
_
peschmae
14-11-2004, 12:16
Ach so, alles klar. Danke!
Doch kleiner Haken, hab ich dich gefunden. :D
Ich möchte dass die Sache nicht gemäss Tastaturfokus sondern nach Maus"fokus" abläuft. D.h. es wird das Widget angesprochen über dem die Maus ist und nicht das welches den Tastaturfokus hat.
Naja, mal gucken. Das kriegen wir sicher auch noch irgendwie hin...
MfG Peschmä
anda_skoa
14-11-2004, 14:19
Das ergibt sich doch durch den Eventhandler, oder?
Wird ja bei dem Button aufgerufen, dessen contextMenuEvent Methode es ist.
Ciao,
_
Powered by vBulletin® Version 4.2.5 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.