[gelöst] [Qt4] QMenu(Mausklick verhält sich nicht wie Enter)

Alles rund um die Programmierung mit Qt
Antworten
ArneStocker
Beiträge: 300
Registriert: 3. November 2004 16:15
Wohnort: Berlin

[gelöst] [Qt4] QMenu(Mausklick verhält sich nicht wie Enter)

Beitrag von ArneStocker »

Hallo

ich habe testweise ein kleines prog. geschrieben und festgestellt, dass sich QMenu unterschiedlich verhält, je nachdem ob ich den Eintrag mit der Maus oder mit der Entertaste (navigiert durch die Pfeiltasten) auswähle

Code: Alles auswählen

QString PopMenu(..)
{
    // Popup füllen
    MenuBaum::iterator baumit;
    for ( baumit = m_baum.begin(); baumit != m_baum.end(); ++baumit ) {
          QString eintrag = baumit.key();
          pPopupScript->addAction(eintrag);
    }
    ....
    // popup ausführen
    QAction *pAction = pPopupScript->exec(pos);
    if (pAction != NULL)
         return pAction->text();
    else
        return "Mist";
}
Wenn ich das Menü mit der Maus auswähle, erhalte ich brav den ausgewählten Text, wenn ich das Menü mit der Entertaste auswähle, erhalte ich nur "Mist". Ist das normal oder nicht? Da es mir an dieser Stelle nur auf den Text ankommt (= Unterstützung der Texteingabe) möchte ich eigentlich nicht den Weg über die Slots gehen.

Gruss Arne
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Re: QT 4.01 und QMenu (Mausklick verhält sich nicht wie Ente

Beitrag von macman »

Kann ich nicht nachvollziehen, allerdings fülle ich meine Menüs auch mit echten QActions und überlasse das erstellen nicht der addAction Methode. Sollte eigentlich keinen Unterschied machen, aber versuch es mal:

Code: Alles auswählen

QString PopMenu(..)
{
    // Popup füllen
    MenuBaum::iterator baumit;
    for ( baumit = m_baum.begin(); baumit != m_baum.end(); ++baumit ) {
          QString eintrag = baumit.key();
          QAction* act = new QAction(eintrag);
          pPopupScript->addAction(act);
    }
    ....
    // popup ausführen
    QAction *pAction = pPopupScript->exec(pos);
    if (pAction != NULL)
         return pAction->text();
    else
        return "Mist";
} 
ArneStocker
Beiträge: 300
Registriert: 3. November 2004 16:15
Wohnort: Berlin

Beitrag von ArneStocker »

das ändert leider auch nichts. Ich bin also den Umweg über die Slots gegangen

Gruss Arne
Antworten