2009-07-17 22 views
5

Estoy usando QT4 y agregando entradas dinámicamente a un QMenu. ¿Es posible ordenar las entradas en el QMenu sin eliminarlo y crear uno nuevo?Elemento Qt4 QMenu ordenando

Originalmente pensé que había una función para insertar en un lugar específico para poder ordenar la inserción, pero no he podido localizarla.

Respuesta

6

Una vez agregado, no creo que pueda reordenar. Mientras crea, puede usar el método QWidget::insertAction para colocarlo exactamente donde lo desea.

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

De lo contrario, podría usar QWidget::addActions. Crea tu lista de Acciones y ordénala antes de agregarla al QMenu.

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

En uno de mis códigos, guardo las QActions en una lista separada y genero los menús y submenús bajo demanda. En teoría, puedo agregar "peso" a los artículos y ordenarlos nuevamente, pero aún no lo he implementado.

Página del proyecto está disponible aquí: http://code.google.com/p/qtedit4/wiki/qmdilib

Tenga en cuenta que las acciones de QWidget (y QMenu) se almacenan como un QList que puede "leer", usando QWidget::actions(). Recuerde que la lista se copia, por lo que puede modificar las acciones, pero no la lista en sí. (Espero no estar confundiéndome ...)