【问题标题】:Change Component Properties In GridView from a javascript function从 javascript 函数更改 GridView 中的组件属性
【发布时间】:2017-01-21 20:42:58
【问题描述】:

我正在尝试使用 Qt 快速创建一个 GUI,我将在多个文件中有大量数据,并且我将通过 C++(将逻辑留在那里)不断更新 GUI,这将发出到某个 JS 函数(不确定是否这是做事的正确方法)。

我用Grid(不是GridView) 布局做了一个简单的例子,因为我发现了如何改变第一个矩形的颜色,而不是嵌套的颜色。这里是:

Column{
    spacing:2

    Grid{
        id:grid
        columns: 2
        rows:2
        spacing: 10
        Repeater{
            model:4

            Rectangle{
                id:rect1
                width:100
                height:100
                color:"red"
                Rectangle{
                    id:rect2
                    width:25
                    height: 25
                    color:"black"
                    anchors.horizontalCenter: rect1.horizontalCenter
                    anchors.verticalCenter: rect1.verticalCenter
                }

            }
        }
    }

    Button{
        text:"Click me"
        width:50
        height:50
        onClicked: {
            for (var i = 0; i <grid.children.length; ++i)
                column.children[i].color="green";
        }
    }
}

【问题讨论】:

  • 为什么你需要一个 JavaScript 函数来处理这些? GridView 中的委托只能对其模型条目数据的更改做出反应
  • 我是一个初学者,我正在尝试寻找如何创建我的界面我不确定这是否是正确的方法。我刚刚编辑了我的问题,但是当我在文档中阅读时,您需要将逻辑与图形分开,所以我认为我的 c++ 函数将向我的 javascript 函数发出信号,而 javascript 函数将改变颜色..

标签: qt gridview qml qt5 qtquick2


【解决方案1】:

在简单尝试访问第二个Rectangle 后,我找到了解决问题的方法,就像访问GridRectangle 子级一样。

for (var i = 0; i < column.children.length; ++i)
    grid.children[i].children[0].color="green";

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-24
    • 1970-01-01
    • 2020-03-24
    • 1970-01-01
    • 1970-01-01
    • 2021-08-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多