qml自定义switch_qml: 自定义滚动条;

注:  该博文为原创博文,转载请注明,摘用请随意;

qml自带的滚动条不太好用;

首先,利用canvas绘制滚动条两端的箭头:

import QtQuick 2.0

Canvas {

width: 20;

height: 20;

property real dir: 0; //0: up; 1: right; 2: down; 3: left;

onPaint: {

var ctx = getContext("2d")

ctx.fillStyle = Qt.rgba(0.1,0.1,0.1,0.7);

ctx.clearRect(0,0,width,height)

ctx.fillRect(0,0,width,height)

ctx.beginPath();

switch(dir)

{

case 0: //up;

ctx.moveTo(width/2,1/4 * height);

ctx.lineTo(width/4,3/4 * height);

ctx.lineTo(width * 3/4, 3/4 * height);

ctx.lineTo(width/2,1/4 *height);

break;

case 1: //right;

ctx.moveTo(width * 3/4,1/2 * height);

ctx.lineTo(width/4,1/4 * height);

ctx.lineTo(width/4, 3/4 * height);

ctx.lineTo(width * 3/4,1/2 *height);

break;

case 2: //down;

ctx.moveTo(width/2,3/4 * height);

ctx.lineTo(width * 3/4,1/4 * height);

ctx.lineTo(width * 1/4, 1/4 * height);

ctx.lineTo(width/2,3/4 *height);

break;

case 3: //left;

ctx.moveTo(width/4,1/2 * height);

ctx.lineTo(width *3/4,3/4 * height);

ctx.lineTo(width * 3/4, 1/4 * height);

ctx.lineTo(width/4,1/2 *height);

break;

}

ctx.closePath();

ctx.fillStyle = Qt.rgba(1,1,1,0.7);

ctx.fill();

}

}

然后,自定义整个滚动条:

import QtQuick 2.0

Rectangle {

property Item attachItem;

property bool bHScroll: false;

property real barSize : 20;

property bool bSpace: false; //是否留空;

property real size: 1;

color:Qt.rgba(0.1,0.1,0.1,0.1);

border.color:Qt.rgba(0.8,0.8,0.8,0.8);

border.width: 1;

width: bHScroll ? attachItem.width

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值