Benutzerdefiniertes Qt QMenu

8

Gibt es eine Möglichkeit in Qt, einem QMenu ein Layout oder Widgets hinzuzufügen, um ein benutzerdefiniertes Menü zu erstellen?

Das Beispiel unten (links) ist das, was ich habe, und ich möchte etwas ähnliches wie das Mock-up auf der rechten Seite erreichen, indem ich Nicht-Menü-Widgets hinzufüge. Wenn dies von QMenu nicht möglich ist, gibt es Anleitungen, um ähnliche Ergebnisse zu erzielen (vielleicht, indem Sie ein Standard-Widget als Kontextmenü verwenden), irgendwo?

    
Kver 13.09.2013, 13:21
quelle

2 Antworten

8

Sicher gibt es! In Qt gibt es einen Weg, wenn es einen Willen gibt.

Sie müssen wahrscheinlich Ihre eigene Klasse erstellen, die QMenu verwendet und ein Mitglied QListWidget verwendet.

Sie müssen dann das Layout generieren und alle korrekten QLayout -Funktionen für die Größenneuberechnung überladen.

Und dann müssen Sie dieses Layout verwenden (think QHBoxLayout ), um sowohl eine QMenu als auch eine QListWidget Seite an Seite anzuzeigen.

Das sollte genug sein, um Sie in die richtige Richtung zu weisen.

BEARBEITEN:

Wie ein Kommentator hervorhebt, können Sie nicht zwei QObject Dinge erben, also habe ich die aktualisiert antworte entsprechend.

    
Tyler Jandreau 13.09.2013, 13:33
quelle
0

Um Menüelemente anzupassen, können Sie QWidgetAction class verwenden. Aber Sie möchten das Menü so anpassen, dass es wie ein Popup-Widget aussieht. Sie können also QMenu ableiten und versuchen, das Layout des Menüs für Ihre Bedürfnisse zu verbessern ( QMenu ist QWidget ). Deine Frage ist nicht klar.

    
Dmitry Sazonov 13.09.2013 14:16
quelle

Tags und Links