tags:

views:

343

answers:

2

I am using QT4 and dynamically adding entries to a QMenu. Is it possible to sort the entries in the QMenu without deleting it and creating a new one?

I originally thought there was a function to insert at a specific location so I could sort on insert, but I have not been able to locate it.

+2  A: 

Once added, I don't think you can reorder. While you are creating though you could use the QWidget::insertAction method to place it exactly where you want it.

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

Otherwise you could use QWidget::addActions. Create your list of Actions and sort it before adding to the QMenu.

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

In one of my codes, I save the QActions into a separate List and generate the menus and submenus on demand. In theory, I can add "weight" to the items and have them re-ordered, but I have not implemented this yet.

Project page is available here: http://code.google.com/p/qtedit4/wiki/qmdilib

Please note that the actions of QWidget (and QMenu) are stored as a QList which can be "read", using QWidget::actions() . Remember that the list is copied, so you can modify the actions but not the list itself. (I hope I am not mistaking...)

elcuco