QML ListView 属性小例 一 Highlight

QML ListView 属性小例 一 Highlight


此博客始创于:http://blog.csdn.net/lys211

转载请注明出处


QML提供有列表控件ListView,

最近在使用的时候还是发现Highlight属性比较奇怪,按着下面的例子:

ListView{
        id:listview;
        anchors.fill: parent;
        model:model;

        highlight: Rectangle{
            color: "lightsteelblue";
            radius: 3;
        }
        highlightFollowsCurrentItem: true;
        focus: true;

        delegate:Item {
            id: wrapper;
            width: listview.width;
            height: 30;
            Rectangle{ /*1*/
                anchors.fill: parent;
                Text {
                    text: name;
                }
<pre style="margin-top: 0px; margin-bottom: 0px;"><span style=" color:#ff8bff;"><span style="white-space:pre">		</span>MouseArea</span>{
                    anchors.fill: parent;
                    onClicked: {
                        wrapper.ListView.view.currentIndex = index;
                    }
                }
} } }
 

效果却是这样的,根本没有highjlight效果:

解决方法一:

把代码中标记为/*1*/的Rectangle的颜色设置为"transparent",效果如下:

解决方法二:

给highlight添加两个属性,使highlight变成:

highlight: Rectangle{
            color: "lightsteelblue";
            radius: 3;
            opacity: 0.5
            z:listview.z + 2;
        }

效果:




解决方法三:

如果只是为了标记当前选择的item,还有第三种方法:

删除掉highlight相关的:

highlight: Rectangle{
            color: "lightsteelblue";
            radius: 3;
            opacity: 0.5
            z:listview.z + 2;
        }
        highlightFollowsCurrentItem: true;
        focus: true;

不使用highlight了,设置标记为 /*1*/的Rectangle的颜色属性为:

color: wrapper.ListView.isCurrentItem?"blue":bgcolor;


于是变成了:

Rectangle{
                anchors.fill: parent;
                color: wrapper.ListView.isCurrentItem?"lightblue":"white";
                Text {
                    text: name;
                }
                MouseArea{
                    anchors.fill: parent;
                    onClicked: {
                        wrapper.ListView.view.currentIndex = index;
                    }
                }
            }

效果出来了:




方法一和方法二实现的高亮标记在变换的时候比较平滑,不会显得突兀。

方法三只是一种替代方法,在高亮的item改变的时候,会显得比较突然,不顺畅。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值