• 4642阅读
  • 3回复

qml 组件创建注意事项 createObject [复制链接]

上一主题 下一主题
离线happylatch
 

只看楼主 倒序阅读 楼主  发表于: 2015-07-08
— 本帖被 XChinux 执行加亮操作(2016-04-23) —

创建动态组件时候,如果在createObject函数里面没有设定组件的高宽度,则在组件的Component.onCompleted内部
获取的高度宽度是默认的,在组件的单击里面获取的高宽度才是后来设定的88。假如创建组件myW.qml
代码如下:
var componentFT = Qt.createComponent("myW.qml");
            if (componentFT.status === Component.Ready)
            {
                var ftObj = componentFT.createObject(parent, {"folderName":"good name"/*, "width":88, "height":88*/});
        ftObj.width = 88;
                ftObj.height = 88;
            }



如果在createObject函数里面设定组件的高宽度,则在组件的Component.onCompleted内部
获取的高度宽度是就是设定的,代码如下:
Component.onCompleted: {
            var componentFT = Qt.createComponent("myW.qml");
            if (componentFT.status === Component.Ready)
            {
                var ftObj = componentFT.createObject(parent, {"folderName":"good name", "width":88, "height":88});

            }
        }



-------------myW.qml如下----------------
import QtQuick 2.0

Rectangle {
    width: 100    // 默认高度
    height: 62

    Component.onCompleted: console.log("compoent width=",width, "height=",height);
    MouseArea{
        id:idMa
        anchors.fill: parent

        onClicked: {
            console.log("click, width=", width, "height=", height);
        }
    }

}
离线彩阳

只看该作者 1楼 发表于: 2015-07-09
对啊。这很正常。不仅仅是宽和高,还有其它属性也是这样的。
上海Qt开发联盟,热忱地欢迎你的加入!
离线qyvlik

只看该作者 2楼 发表于: 2015-08-20
动态组件创建,多数用于页面传参。页面传参最好在createObject这里设定。
ubiboot
离线姜小白

只看该作者 3楼 发表于: 2016-04-23
回 qyvlik 的帖子
qyvlik:动态组件创建,多数用于页面传参。页面传参最好在createObject这里设定。
 (2015-08-20 10:13) 

参数获取呢?有没有比信号槽更好的方法?
我整理的一些文章,持续更新中,有兴趣的小伙伴可以关注。
https://xiaozhuanlan.com/sorghum-cpp?rel=sorghum

Qt技术交流:QQ2499971906
快速回复
限100 字节
 
上一个 下一个