2015-07-20 73 views
2

我想定製我的應用程序的樣式,並且我卡在TextField彈出式菜單的樣式中。QML更改TextField菜單的樣式

TextField.style允許定製TextField的外觀,但它不包含菜單的樣式。據documentation有包含Menu所以我想是這樣的一個屬性menu:以上

TextField { 
    menu.style: MenuStyle { 
     //... 
    } 
} 

代碼抱怨財產style是不存在的,所以它不完全Menu,它是用於創建菜單Component和我不知道是否有辦法通過它到達實際的Menu。文檔僅提及TextField.menu可以設置爲null以完全禁用它,並且不提供其他用例。

那麼有沒有辦法到達菜單TextField並改變它的風格?

回答

1

那麼,你應該在這裏發佈所有相關的代碼。無論如何,你不能單獨定義TextField菜單及其風格。照下面的例子來定製Menu風格,將其添加到TextField在線:

TextField { 
    text: "text here" 
    anchors.centerIn: parent 
    menu: Menu { 
     style: MenuStyle { 
      frame: Rectangle { 
       color: "green" 
       border.color: "purple" 
      } 
      itemDelegate { 
       background: Rectangle { 
        color: "yellow" 
       } 
       label: Text { 
        color: styleData.selected ? "red" : "blue" 
        text: styleData.text 
       } 
      } 
     } 
     MenuItem { text: "Cut" } 
     MenuItem { text: "Copy" } 
    } 
} 

MenuStyle性能完整列表,請參閱this頁。

+0

有沒有方法可以改變菜單樣式而無需重新實現菜單?據我所知,我需要在此解決方案中提供我自己的「剪切」,「複製」等操作。 –

+0

我不認爲這是可能的。 'TextField.menu'是'Component',它沒有'style'屬性。 – folibis

+0

謝謝@folibis,那它有什麼屬性? 'TextField.menu.url'指向我的文件'Qt5.5.0/5.5/gcc_64/qml/QtQuick/Controls/Private/EditMenu_base.qml',它實現了默認菜單。我將它複製到我的項目中,並稍微改變它以接受自定義菜單樣式,並將其綁定到我的TextField。它很混亂,但它工作。 –