0

我是论坛的新手,我开始在 QtQuick 中设计一些东西。我仍在探索和学习基本的东西,我偶然发现了以下问题。当我尝试使用 Listview 从 ListModel 创建菜单(菜单栏)时,我根本没有得到任何菜单。也许我对这些原则仍有误解,你可以帮助我。这是我的基本代码:

import QtQuick 2.12
import QtQuick.Window 2.14
import QtQuick.Layouts 1.12
import QtQuick.Dialogs 1.3
import QtQuick.Controls 2.14
MenuBar{
  id: menuBarId

  ListModel{
  id: listModelMenuId
  ListElement {menuname: "Test1"}
  ListElement {menuname: "Test2"}

  }
  ListView{
  id: listViewMenuId
  model: listModelMenuId
  delegate: Menu {
          id: menu
          title: model.menuname
          Action { text: qsTr("Tool Bar"); checkable: true }
          Action { text: qsTr("Side Bar"); checkable: true; checked: true }
          Action { text: qsTr("Status Bar"); checkable: true; checked: true;}

          MenuSeparator {
              contentItem: Rectangle {
                  implicitWidth: 200
                  implicitHeight: 1
                  color: "#21be2b"
              }
          }
          Menu {
              title: qsTr("Advanced")
          }

          topPadding: 2
          bottomPadding: 2
//          delegate: mydelegateid

          background: Rectangle {
              implicitWidth: 200
              implicitHeight: 40
              color: "#ffffff"
              border.color: "#21be2b"
              radius: 2


          }
      }} }

我从 qt 站点获取了我的示例,并通过添加 ListModel 对其进行了篡改。同样有趣的是,如果我想通过使用我打包 MenuItem 并调用组件的组件来重构原始编码,它也不起作用。是不是一般菜单的工作方式与其他项目不同?如果我遗漏了一些重要的东西,请告诉我,我会添加更多信息。

此致!

4

1 回答 1

0

我解决了这个问题。 在 MenuBar 中委派您的样式的示例

这总体上解决了问题。但是,我仍然想知道为什么我不能将 MenuItem 封装到一个组件中并使用组件 id 来委托项目的样式....问候, Seryoga

于 2020-02-17T15:16:59.883 回答