QML笔记

作者: 生活简单些 | 来源:发表于2022-01-05 09:52 被阅读0次

1. Button设置了icon和大小却不能显示

Button {
    width: 20
    height: 20
    padding: 0 // 如果不加padding=0,有可能因为图片小于
    icon {
        source: "assets/confirm_btn.png"
        width: 20
        height: 20
    }
}

2. Rectangle无法监听onFocusChanged()

默认Rectangle是没有焦点的,想要监听onFocusChanged()必须先设置focus : true

3. 当一个布局覆盖另外一个布局时候,希望事件不要穿透到被覆盖的布局,但自身的鼠标事件保留

或许你会考虑如下两种方式,但是很难控制保留自身鼠标事件:

方法1:

MouseArea{
    anchors.fill: parent
    propagateComposedEvents: false
}

方法2:

MouseArea{
    anchors.fill: parent
    onPressed: {
        console.log("item pressed")
        mouse.accepted=false
    }
}

更好的办法是,让自己覆盖层布局继承Control或者Page(Page本质也是Control), 因为Control本身是事件不穿透到下面布局的。

4. 给Button控件设置背景色

Button属于Control的子View,所有集成Control的View都提供了background属性,如果想设置背景色只能重写backgroud:

Page {
    id: root
    width: 1920
    height: 1080
    
    background: Rectangle {
        anchors.fill: parent
        color: Theme.transparent
    }
}

相关文章

网友评论

      本文标题:QML笔记

      本文链接:https://www.haomeiwen.com/subject/puqvchtx.html