从 javascript 函数更改 GridView 中的组件属性

Posted

技术标签:

【中文标题】从 javascript 函数更改 GridView 中的组件属性【英文标题】:Change Component Properties In GridView from a javascript function 【发布时间】: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 函数将改变颜色.. 【参考方案1】:

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

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

【讨论】:

以上是关于从 javascript 函数更改 GridView 中的组件属性的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 JavaScript 函数更改 CSS 值(颜色标签)? [复制]

从javascript更改div元素的属性[重复]

如何从html按钮更改JavaScript布尔值?

从 javascript 函数填充 DTO 类

客户端可以通过浏览器更改javascript值吗?

在 Yii2 GridView 页面更改时维护 Bootstrap 选项卡