2009-07-17 18 views
5

私はQT4を使用しており、QMenuに動的にエントリを追加しています。 QMenuのエントリを削除したり、新しいものを作成することなく並べ替えることは可能ですか?Qt4 QMenu items sorting

私はもともと特定の場所に挿入する機能があると思っていたので、挿入時に並べ替えることができましたが、見つけられませんでした。

答えて

6

一度追加すると、私はあなたが並べ替えることはできないと思います。あなたが作成している間に、QWidget::insertActionメソッドを使用して、望む場所に正確に配置することができます。

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

そうしないと、QWidget::addActionsを使用することができます。 QMenuに追加する前にアクションリストを作成してソートしてください。

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

私のコードの1つでは、QActionsを別のリストに保存し、オンデマンドでメニューとサブメニューを生成します。理論的には、アイテムに「重み」を付け加えて並べ替えることができますが、まだ実装していません。

プロジェクトページはこちらです:。http://code.google.com/p/qtedit4/wiki/qmdilib

QWidget(およびQMenu)のアクションはQWidget::actions()を使用して、「read」になることができQListとして格納されていることに注意してくださいリストはコピーされるので、リスト自体は変更できません。 (私は誤解していないことを願っています...)