c++ - Loader,带参数的setSource

标签 c++ qt qml loader

当我通过 Loader qml (setSource) 加载组件时,我应该在 Test.qml 项上设置属性 stringa1 和 stringa2:

Page1.qml

import QtQuick 2.7

Page1Form {

    button1.onClicked: {
        console.log("Button Pressed. Entered text: " + textField1.text);
        itemLoader.setSource("Test.qml", {"stringa1": "ScrivoStr1"}, {"stringa2": "ScrivoStr2"})
    }

    itemToFill.children:
        Loader {
            anchors.fill: parent
            id: itemLoader
        }
}

测试.qml

import QtQuick 2.4

TestForm {

    property string stringa1
    property string stringa2

    signal setStr1(string str1)

    anchors.fill: parent

    Component.onCompleted: {

        button.text = stringa1 + " - " + stringa2

    }

    button.onClicked: console.log("Push");

}

当我使用以下命令设置 stringa1 和 stringa2 时:

itemLoader.setSource("Test.qml", {"stringa1": "ScrivoStr1"}, {"stringa2": "ScrivoStr2"})

Test.qml 只读 stringa1 值。

在 Qml Loader 组件和加载的 Item 之间设置/传递参数的最佳方式是什么?谢谢指教

最好的问候 丹妮尔

最佳答案

应该是:

itemLoader.setSource("Test.qml", {"stringa1": "ScrivoStr1", "stringa2": "ScrivoStr2"})

注意setSource is declared as :

object setSource(url source, object properties)

它只接受一个包含所有属性的对象。您正在传递多个对象。在你的情况下只考虑第一个,所有其他的都被丢弃。
如果必须使用多个参数,请将它们全部放在一个对象中。就这样。

关于c++ - Loader,带参数的setSource,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44840824/

相关文章:

c++ - C++ 类的 Qt 类数据成员在使用前是否应该初始化?

qt - QML 仅在可用时导入更高版本的模块?

c++ - 如何在 Qt 应用程序中的 pressAndHold 事件期间移动 map ?

c++ - Qt QML : UI with dynamic number of images provided by c++ code

c++ - 在 C++ 中使用 Bash 终端 (WSL) 的 Visual Studio Code 仅构建 .out 文件 - 而不是 .exe

c++ - OpenCV Otsu 的阈值 : Calculate single threshold value for multiple Mat objects

c++ - 从十六进制转换为二进制 C++

c++ - 在注入(inject)的 DLL 中调用函数?

qt - 使用 Qt 保存和检索图像

c++ - Qt/C++技术显示内联对话框