Anzeige:
Ergebnis 1 bis 8 von 8

Thema: Qt: Lokaler QAccel

  1. #1
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549

    Qt: Lokaler QAccel

    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ä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  2. #2
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Ist das jetzt in einem Kontextmenü, oder allgemein immer gültig?

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  3. #3
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    Das ist ein Kontextmenü. Ich möchte einfach die Aktionen dort drin auch via Shortcuts ausführen können.

    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  4. #4
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    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,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  5. #5
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    Es ist modal:
    Code:
    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ä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  6. #6
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Probier es mal mit zwei QActions statt dem direkten insertItem

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  7. #7
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    Ach so, alles klar. Danke!

    [Edit]
    Doch kleiner Haken, hab ich dich gefunden.

    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...
    [/Edit]

    MfG Peschmä
    Geändert von peschmae (14-11-2004 um 12:24 Uhr)
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  8. #8
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Das ergibt sich doch durch den Eventhandler, oder?
    Wird ja bei dem Button aufgerufen, dessen contextMenuEvent Methode es ist.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •