2017-08-12 8 views
0

私はListModelから動的Menuを埋めるためにしようとしているが、(私は右の何も表示されませんメニューをクリックしたときに)このアプローチは動作しません。QML - モデルのアイテムを充填メニュー

これを私のメニューアイテム:

import QtQuick.Controls 1.3 

ListModel{ 
    id:menuItems 
    ListElement{ 
     text:"hello1" 
    } 
    ListElement{ 
     text:"hello2" 
    } 
    ListElement{ 
     text:"hello3" 
    } 
} 

と、この私のメニュー

Menu{ 
    id:contextMenu 
    Repeater{ 
    model: menuItems 
    MenuItem{} 

} 

私もInstantiatorを入れてみましたが、メニューには何も表示されません

答えて

0

ドキュメントで見た後、私はそれを達成する方法を考え出し:

Menu { 
    id: contextMenu 

    Instantiator { 
     model: menuItems 
     MenuItem { 
      text: model.text 
     } 
    //The trick is on those two lines 
    onObjectAdded: contextMenu.insertItem(index, object) 
    onObjectRemoved: contextMenu.removeItem(object) 
    } 
} 
+1

質問に以下の情報を追加してください(importとasタグの両方) - あなたのQtQuick.Controlsにはどのバージョンを使用しますか?それは 'QtQuick.Controls 1.x'(タグ:' qtquickcontrols')か 'QtQuick.Controls 2.x'(タグ:qtquickcontrols2)ですか? – derM

0

あなたはちょうどこのようなあなたのMenuItemにすべての単一のListElement用のテキストを追加する必要があります。

Menu{ 
    id:contextMenu 
    visible: true 
    Repeater { 
     model: menuItems 
     MenuItem { 
      text: modelData 
     } 
    } 
} 

私も「が見える:真」追加(私はいけないあなたの場合は知っているあなたのメニューにそれを表示他のどこかでそれを開いている)。

+0

申し訳ありませんが、この – pourjour

+0

かかわらず機能していないことは、あなたがすべてのエラーを取得するのですか?メニューが表示されますか、空の項目でいっぱいのメニューですか?答えはQt 5.9.0でテストされました – 0x90

+0

Qt 5.9.1を使用していますが、エラーは表示されません。メニューはちょうど表示されていない – pourjour