热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

QMLListView定制滚动条

ListView可以设置默认的滚动条,但默认的滚动条往往不符合我们的要求,所以可以自已定制效果不同的滚动条,下面是代码示例:

ListView可以设置默认的滚动条,但默认的滚动条往往不符合我们的要求,所以可以自已定制效果不同的滚动条,下面是代码示例:

//MyListView.qmlimport QtQuick 2.12
import QtQuick.Controls 2.12Item {id: rootItemwidth: 350height: 400ListModel {id: listRouteModelListElement {titleText: qsTr("标题0"); titleColor: "white"}ListElement {titleText: qsTr("标题1"); titleColor: "white"}ListElement {titleText: qsTr("标题2"); titleColor: "white"}ListElement {titleText: qsTr("标题3"); titleColor: "white"}ListElement {titleText: qsTr("标题4"); titleColor: "white"}ListElement {titleText: qsTr("标题5"); titleColor: "white"}ListElement {titleText: qsTr("标题6"); titleColor: "white"}ListElement {titleText: qsTr("标题7"); titleColor: "white"}ListElement {titleText: qsTr("标题8"); titleColor: "white"}ListElement {titleText: qsTr("标题9"); titleColor: "white"}ListElement {titleText: qsTr("标题10"); titleColor: "white"}ListElement {titleText: qsTr("标题11"); titleColor: "white"}ListElement {titleText: qsTr("标题12"); titleColor: "white"}ListElement {titleText: qsTr("标题13"); titleColor: "white"}ListElement {titleText: qsTr("标题14"); titleColor: "white"}ListElement {titleText: qsTr("标题15"); titleColor: "white"}ListElement {titleText: qsTr("标题16"); titleColor: "white"}ListElement {titleText: qsTr("标题17"); titleColor: "white"}ListElement {titleText: qsTr("标题18"); titleColor: "white"}ListElement {titleText: qsTr("标题19"); titleColor: "white"}ListElement {titleText: qsTr("标题20"); titleColor: "white"}ListElement {titleText: qsTr("标题21"); titleColor: "white"}ListElement {titleText: qsTr("标题22"); titleColor: "white"}ListElement {titleText: qsTr("标题23"); titleColor: "white"}ListElement {titleText: qsTr("标题24"); titleColor: "white"}}ListView{id:listViewclip: truewidth: 410;height: 380anchors.bottomMargin: 2model: listRouteModel;focus: truedelegate: tabDelegate}//滚动条Rectangle {id: scrollbarx:400; y:0width: 10; height: 380radius: 10//按钮Rectangle {id: buttonx:0y: listView.visibleArea.yPosition * scrollbar.heightwidth: 10height: listView.visibleArea.heightRatio * scrollbar.heightcolor: "#818b81"radius: 10//鼠标区域MouseArea {id: mouseAreaanchors.fill:buttondrag.target: buttondrag.axis: Drag.YAxisdrag.minimumY: 0drag.maximumY: scrollbar.height//拖动onMouseYChanged: {listView.contentY = button.y / scrollbar.height * listView.contentHeight}}}}//ComponentComponent {id: tabDelegateRectangle {width: 100; height: 25;color: (listView.currentIndex === index) ? "blue": "green"//标题Text {width: parent.width - 3; height: 25;anchors.left: parent.left;anchors.leftMargin: 0;anchors.top: parent.topanchors.topMargin: 0font.pixelSize: 16;color: (listView.currentIndex === index) ? "red" : titleColortext: titleTexthorizontalAlignment: Text.AlignHCenter; //文字水平居中对齐verticalAlignment: Text.AlignVCenter;//文字垂直居中对齐}MouseArea {anchors.fill: parentonClicked: {listView.currentIndex = indexconsole.log("clicked currentIndex================" + listView.currentIndex)}}}}//end Component}

//main.qml
import QtQuick 2.12
import QtQuick.Window 2.12Window {visible: truewidth: 640height: 480title: qsTr("Hello World")MyListView {id:myListViewwidth: 350height: 400anchors.top: parent.topanchors.topMargin: 20anchors.left: parent.leftanchors.leftMargin: 20}
}

运行效果:

 


推荐阅读
  • 在PHP中如何正确调用JavaScript变量及定义PHP变量的方法详解 ... [详细]
  • 在尝试对 QQmlPropertyMap 类进行测试驱动开发时,发现其派生类中无法正常调用槽函数或 Q_INVOKABLE 方法。这可能是由于 QQmlPropertyMap 的内部实现机制导致的,需要进一步研究以找到解决方案。 ... [详细]
  • 深入解析 Android 中 EditText 的 getLayoutParams 方法及其代码应用实例 ... [详细]
  • 本文探讨了资源访问的学习路径与方法,旨在帮助学习者更高效地获取和利用各类资源。通过分析不同资源的特点和应用场景,提出了多种实用的学习策略和技术手段,为学习者提供了系统的指导和建议。 ... [详细]
  • 地图集成方法与应用 ... [详细]
  • 在探讨C语言编程文本编辑器的最佳选择与专业推荐时,本文将引导读者构建一个基础的文本编辑器程序。该程序不仅能够打开并显示文本文件的内容及其路径,还集成了菜单和工具栏功能,为用户提供更加便捷的操作体验。通过本案例的学习,读者可以深入了解文本编辑器的核心实现机制。 ... [详细]
  • 实验九:使用SharedPreferences存储简单数据
    本实验旨在帮助学生理解和掌握使用SharedPreferences存储和读取简单数据的方法,包括程序参数和用户选项。 ... [详细]
  • 本文介绍了如何使用 Node.js 和 Express(4.x 及以上版本)构建高效的文件上传功能。通过引入 `multer` 中间件,可以轻松实现文件上传。首先,需要通过 `npm install multer` 安装该中间件。接着,在 Express 应用中配置 `multer`,以处理多部分表单数据。本文详细讲解了 `multer` 的基本用法和高级配置,帮助开发者快速搭建稳定可靠的文件上传服务。 ... [详细]
  • 装饰者模式(Decorator):一种灵活的对象结构设计模式
    装饰者模式(Decorator)是一种灵活的对象结构设计模式,旨在为单个对象动态地添加功能,而无需修改原有类的结构。通过封装对象并提供额外的行为,装饰者模式比传统的继承方式更加灵活和可扩展。例如,可以在运行时为特定对象添加边框或滚动条等特性,而不会影响其他对象。这种模式特别适用于需要在不同情况下动态组合功能的场景。 ... [详细]
  • 本文探讨了使用JavaScript在不同页面间传递参数的技术方法。具体而言,从a.html页面跳转至b.html时,如何携带参数并使b.html替代当前页面显示,而非新开窗口。文中详细介绍了实现这一功能的代码及注释,帮助开发者更好地理解和应用该技术。 ... [详细]
  • QT框架中事件循环机制及事件分发类详解
    在QT框架中,QCoreApplication类作为事件循环的核心组件,为应用程序提供了基础的事件处理机制。该类继承自QObject,负责管理和调度各种事件,确保程序能够响应用户操作和其他系统事件。通过事件循环,QCoreApplication实现了高效的事件分发和处理,使得应用程序能够保持流畅的运行状态。此外,QCoreApplication还提供了多种方法和信号槽机制,方便开发者进行事件的定制和扩展。 ... [详细]
  • 本文详细探讨了使用纯JavaScript开发经典贪吃蛇游戏的技术细节和实现方法。通过具体的代码示例,深入解析了游戏逻辑、动画效果及用户交互的实现过程,为开发者提供了宝贵的参考和实践经验。 ... [详细]
  • 在 Vue 应用开发中,页面状态管理和跨页面数据传递是常见需求。本文将详细介绍 Vue Router 提供的两种有效方式,帮助开发者高效地实现页面间的数据交互与状态同步,同时分享一些最佳实践和注意事项。 ... [详细]
  • ButterKnife 是一款用于 Android 开发的注解库,主要用于简化视图和事件绑定。本文详细介绍了 ButterKnife 的基础用法,包括如何通过注解实现字段和方法的绑定,以及在实际项目中的应用示例。此外,文章还提到了截至 2016 年 4 月 29 日,ButterKnife 的最新版本为 8.0.1,为开发者提供了最新的功能和性能优化。 ... [详细]
  • 微信小程序实现类似微博的无限回复功能,内置云开发数据库支持
    本文详细介绍了如何利用微信小程序实现类似于微博的无限回复功能,并充分利用了微信云开发的数据库支持。文中不仅提供了关键代码片段,还包含了完整的页面代码,方便开发者按需使用。此外,HTML页面中包含了一些示例图片,开发者可以根据个人喜好进行替换。文章还将展示详细的数据库结构设计,帮助读者更好地理解和实现这一功能。 ... [详细]
author-avatar
依然yang梓枫东_811
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有