2009-07-17 2 views
5

Sto usando QT4 e aggiungo dinamicamente le voci a QMenu. È possibile ordinare le voci in QMenu senza eliminarlo e crearne uno nuovo?Qt4 QMenu smistamento articoli

Originariamente pensavo che ci fosse una funzione da inserire in una posizione specifica in modo da poter ordinare sull'inserto, ma non sono stato in grado di individuarlo.

risposta

6

Una volta aggiunto, non penso che sia possibile riordinare. Durante la creazione, tuttavia, è possibile utilizzare il metodo QWidget::insertAction per posizionarlo esattamente dove lo si desidera.

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

Altrimenti è possibile utilizzare QWidget::addActions. Crea il tuo elenco di Azioni e ordinalo prima di aggiungere a QMenu.

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

In uno dei miei codici, risparmio il QActions in un elenco a parte e generare i menu e sottomenu a richiesta. In teoria, posso aggiungere "peso" agli articoli e farli riordinare, ma non l'ho ancora implementato.

pagina del progetto è disponibile qui: http://code.google.com/p/qtedit4/wiki/qmdilib

Si prega di notare che le azioni di QWidget (e QMenu) vengono memorizzati come un QList che può essere "letta", usando QWidget::actions(). Ricorda che l'elenco è copiato, quindi puoi modificare le azioni ma non la lista stessa. (Spero di non sbagliare ...)