Qml tricks

为封装控件提供contentItem扩展时固定锚布局

	/* 最好使用确定的派生类型 */
	property Item contentItem: null
	
    onContentItemChanged: {
        contentItem.parent          = contentItemBase 
        contentItem.anchors.top     = Qt.binding(function() { return contentItemBase.top })
        contentItem.anchors.bottom  = Qt.binding(function() { return contentItemBase.top })
        contentItem.anchors.left    = Qt.binding(function() { return contentItemBase.left })
        contentItem.anchors.right   = Qt.binding(function() { return contentItemBase.right })
    }

获取View类控件中的内容对象

	/* 翻源码拼出来的,还需要进一步加强安全性,但可以直接使用的core code */
	/* QQuickItem*[√] || QQuickComponent* */
	function getItemByIndex(index) {
		return view.contentItem.children[index]
	}

使用lambda数组为ButtonGroup提供点击响应 (结合Repeater等使用)

	/* 带个this方便传送数据,与一般函数不同,这里的lambda捕获的应该是context对象 */
	/* PS:其实也没必要这么规整参数 */
	property var clkFunc: [
        (_this) => { ptcon.btnUndoClicked() },
        (_this) => { ptcon.btnRedoClicked() },
        (_this) => { ptcon.showAudioRecWidget() },
        ......
        (_this) => { toolPopup.displayToolPopup(Constants.GridTypePopup, midBtnRow.x + _this.x + 30) },
    ]
    
        Repeater {
            id: leftBtnGroup
            model: [
                [qsTr("撤销"), "undo", false],
                .....
            ]
            delegate: IconToolButton {
                id: btn
                checkable: modelData[2]
                
				.....
				
                onClicked: {
                    clkFunc[index](this)
                }
            }
        }

想到了再补充

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值