2009-07-17 14 views
5

Używam QT4 i dynamicznie dodawanie wpisów do QMenu. Czy można sortować wpisy w QMenu bez usuwania i tworzenia nowego?Qt4 QMenu sortowanie pozycji

Początkowo sądziłem, że istnieje funkcja wstawiania w określonej lokalizacji, więc mogłem sortować na insert, ale nie byłem w stanie go zlokalizować.

Odpowiedz

6

Po dodaniu, nie sądzę, że można zmienić kolejność. Podczas tworzenia możesz użyć metody QWidget::insertAction, aby umieścić ją dokładnie tam, gdzie chcesz.

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

W przeciwnym razie można użyć QWidget::addActions. Stwórz listę akcji i posortuj ją przed dodaniem do QMenu.

void QWidget::addActions (QList<QAction *> actions) 
1

W jednym z moich kodów, ja zapisać QActions do osobnej listy i wygenerować menu i podmenu na żądanie. Teoretycznie mogę dodać "ciężar" do przedmiotów i zlecić ich ponowny wybór, ale jeszcze tego nie zaimplementowałem.

Strona projektu jest dostępna tutaj: http://code.google.com/p/qtedit4/wiki/qmdilib

Należy pamiętać, że działania QWidget (i QMenu) są przechowywane jako QList który może być „read”, używając QWidget::actions(). Pamiętaj, że lista jest kopiowana, więc możesz modyfikować akcje, ale nie samą listę. (Mam nadzieję, że się nie mylę ...)