qml:实现类似chrome的菜单

时间:2015-01-17 15:05:40

标签: qt qml qt-quick qtquickcontrols

我想用QML实现一个带有单个菜单项的菜单,就像chrome一样。它有这个三个水平条的按钮,当你点击它时,你会得到一个菜单。最新版本的firefox也遵循相同的原则。它允许不在应用程序的GUI中浪费太多的水平空间,取消占据整个窗口宽度的常用菜单。

我没有设法用QML重现这个GUI。从我看到你可以使用QML ApplicationWindow,然后使用MenuBar,然后它占用窗口的整个宽度...或者有一个切换按钮来触发菜单,然后使用一个独立的Menu及其popup()方法,但它会直接在光标下弹出,而不是完全按下按钮以打开菜单,这看起来不太好。这实际上是滥用上下文菜单的机制。

我可以制作一个虚假的菜单,这个菜单在我的窗口中是一个自定义小部件但是它无法扩展到我的应用程序窗口之外。这样的行为几乎是必需的,因为我会把这个按钮放在窗口的最右边,就像chrome一样。

是否有可能在纯QML(无C ++)中实现这种行为?

1 个答案:

答案 0 :(得分:1)

我现在所做的是我提到的最后一个选项:窗口中的假菜单。它使用画布进行绘制,这使我能够从菜单到菜单切换按钮使其成为一个小箭头,就像firefox一样。

正如我所说的那样,菜单不能出窗外,一切都非常手动(菜单项的鼠标悬停效果......),所以我仍然对其他解决方案感兴趣。

编辑:好一段时间后我意识到了我的方法的一大优点:我可以放置自定义小部件,而不仅仅是菜单中的标签。所以我认为现在它绝对是正确的方法。