提供一种行云设计风格的 Menu 控件.
Menu 控件大多被用于应用菜单,例如功能菜单、右键菜单等。 DTK 实现的菜单 比原有样式的菜单更流畅;更定制化,它能够兼容 Menu 的所有接口,并且能够做 到内部的 MenuItem 自动适配菜单的宽高。
除此之外,Menu 还支持添加头部控件和尾部控件,当需要添加自定义搜索内容时, 头部控件可以添加 SearchEdit 来实现。
Menu 的最大项目个数在 DTK 的设计中是 16,当超过该数值时,Menu 会出现 滚动选项,同时 菜单的上部和下部会出现上下移动的按钮,鼠标放置时可自动进行移动。
Menu 的基本用于如下代码所示:
Menu { title: qsTr(
"自定义")}
}
如上代码, Menu 内部控件需要使用 Menu、MenuItem 或者 MenuSeparator,其中 MenuItem 用 来显示实际的菜单项,包含图表和文本, MenuSeparator 用来显示菜单中的分隔符。在菜单中内部的 子菜单,可以使用 Menu 叠加的方式完成。
对于自定义头部控件,这里使用一个 SearchEdit 的示例表示:
id: searchAndArrowMenu
width: 160
placeholder: qsTr("搜索")
onTextChanged: {
proxyModel.filterText = text
proxyModel.update()
}
}
model: ObjectModelProxy {
id: proxyModel
property string filterText
filterAcceptsItem: function(item) {
return item.text.includes(filterText)
}
sourceModel: searchAndArrowMenu.contentModel
}
MenuItem { text: qsTr(
"Cyrillic (ISO 8859-5)") }
MenuItem { text: qsTr(
"Cyrillic(KOI8-R)") }
MenuItem { text: qsTr(
"Devanagari(x-mac-davanagari)") }
MenuItem { text: qsTr(
"Gurmukhi(x-mac-gurmukhi)") }
MenuItem { text: qsTr(
"Thai (ISO 8859-11)") }
MenuItem { text: qsTr(
"Simplified Chinese(x-mac-sim-chinese)") }
MenuItem { text: qsTr(
"Chinese(GBK)"); checked:
true}
MenuItem { text: qsTr(
"Chinese(GB 18030)") }
MenuItem { text: qsTr(
"Chinese(ISO 2022-CN)") }
MenuItem { text: qsTr(
"Simplified Chinese (GB2312)") }
MenuItem { text: qsTr(
"Tibetan (x-mac-tibetan)") }
MenuItem { text: qsTr(
"Central European(ISO Latin 2)") }
MenuItem { text: qsTr(
"Central Eu 188 opx(ISO Latin 4)") }
MenuItem { text: qsTr(
"Baltic (ISO Latin 7)") }
}
Definition SearchEdit.qml:8