2017-08-12 58 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

請將以下信息添加到您的問題中(作爲導入和標籤) - 您爲QtQuick.Controls使用哪個版本?它是'QtQuick.Controls 1.x'(標籤:'qtquickcontrols')還是'QtQuick.Controls 2.x'(標籤:qtquickcontrols2) – derM

0

你只需要爲每一個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