对象属性循环 (QML)

Posted

技术标签:

【中文标题】对象属性循环 (QML)【英文标题】:Loop on object property (QML) 【发布时间】:2017-07-26 08:15:30 【问题描述】:

当我使用以下 QML 文件时,Qt 在运行时报错:

import QtQuick 2.7
import QtQuick.Controls 2.0

Rectangle

    color: palette.grey

    property var spotButtonFunctions :
    
        'EditViewTool' : function() switchToEditViewToolButton.source = "../View/Icons/icon_game.png";,
        'SelectTool'   : function() switchToSelectToolButton.source = "../View/Icons/icon_game.png";
    

    property var greyButtonFunctions :
    
        'EditViewTool' : function() switchToEditViewToolButton.source = "../View/Icons/icon_settings.png";,
        'SelectTool'   : function() switchToSelectToolButton.source = "../View/Icons/icon_info.png";
    

    // View update slots.
    function onNotifyCurrentToolSignal(currentToolName)
    
        // Grey all tool buttons.
        for (x in greyButtonFunctions)
            greyButtonFunctions[x]();

        // Spot the current tool button.
        if (currentToolName !== "")
            spotButtonFunctions[currentToolName]();
    

错误信息与for (x in greyButtonFunctions)行有关:

错误:无法将 QString 分配给 double

有什么想法吗?

【问题讨论】:

【参考方案1】:

您正在分配给Itemx property

如果你想要一个名为 x 的局部变量,你必须这样做 for (var x in greyButtonFunctions)

【讨论】:

以上是关于对象属性循环 (QML)的主要内容,如果未能解决你的问题,请参考以下文章

检测到属性宽度的 QML 绑定循环(TextMetrics 行为怪异)

QML GroupBox:检测到属性“implicitWidth”的绑定循环

如何在循环中初始化 qml 属性列表?

QML ListView:检测到属性“高度”的绑定循环

如何分析“绑定循环”

QML:在没有双重分配的情况下检测到绑定循环