2009-07-17 5 views
5

Ich verwende QT4 und dynamisch Einträge zu einem QMenu hinzufügen. Ist es möglich, die Einträge im QMenu zu sortieren, ohne sie zu löschen und neu zu erstellen?Qt4 QMenu Artikel sortieren

Ich dachte ursprünglich, dass es eine Funktion zum Einfügen an einer bestimmten Stelle gab, so dass ich nach dem Einfügen sortieren konnte, aber ich konnte es nicht finden.

Antwort

6

Einmal hinzugefügt, ich glaube nicht, dass Sie neu anordnen können. Während Sie erstellen, obwohl Sie die QWidget::insertAction Methode verwenden können, um es genau dort zu platzieren, wo Sie es wollen.

void QWidget::insertAction (QAction * before, QAction * action) 

Sonst könnten Sie QWidget::addActions verwenden. Erstellen Sie Ihre Aktionsliste und sortieren Sie sie, bevor Sie sie dem QMenu hinzufügen.

1

In einem meiner Codes, speichere ich die QActions in einer separaten Liste und generieren Sie die Menüs und Untermenüs bei Bedarf. Theoretisch kann ich den Elementen "Gewicht" hinzufügen und sie neu ordnen lassen, aber ich habe dies noch nicht implementiert.

Projektseite finden Sie hier: http://code.google.com/p/qtedit4/wiki/qmdilib

Bitte beachten Sie, dass die Aktionen von QWidget (und QMenu) als QList gespeichert werden, die „gelesen“ werden kann, QWidget::actions() verwenden. Denken Sie daran, dass die Liste kopiert wird, sodass Sie die Aktionen ändern können, nicht aber die Liste selbst. (Ich hoffe, ich verwechsle nicht ...)