先上效果图:

完整项目路径:

https://github.com/lesliefish/QMLInAction/tree/master/demos%26projects/Components/FontSelector


单独组件代码:

import QtQuick 2.0
import QtQuick.Controls 2.2Item {id : fontSelector;height: 300;width: 120;property string curSelectedFont: "";//当前选中的字体// 自定义字体选择更改事件的信号signal fontSelectChanged(string newFont);//设置某字体,然后根据调整列表中当前选中项为当前字体function setFont(newFont){tumbler.changeIndexByFont(newFont);}Tumbler {id:tumblerheight: fontSelector.height;width: fontSelector.width;model: fontListModel// 列表背景background: Item {Rectangle {opacity: tumbler.enabled ? 0.9 : 1border.color: "#000000"width: tumbler.widthheight: tumbler.heightanchors.top: parent.topcolor: "black";radius: 5;}}//具体Item的代理delegate: Rectangle{opacity: 1.0 - Math.abs(Tumbler.displacement) / (tumbler.visibleItemCount / 2) // 这行代码控制列表上下的item透明度逐渐降低,渐隐效果color : tumbler.currentIndex === index ? "darkred" : "transparent";// 根据是否当前选中item调整背景色Text {anchors.fill: parenttext: displayData;      // item显示的文字使用fontListModel的displayDatahorizontalAlignment: Text.AlignHCenter;verticalAlignment: Text.AlignVCenter;font.family: realData;  // item显示的字体使用fontListModel的realDatafont.bold: tumbler.currentIndex === index; // 根据是否当前选中item调整字体是否加粗font.pointSize: tumbler.currentIndex === index ? 20 : 14;// 根据是否当前选中item调整字体大小color: tumbler.currentIndex === index ? "lightblue" : "white";// 根据是否当前选中item调整字体颜色}}// 当前选中项更改事件onCurrentIndexChanged: {fontSelector.curSelectedFont = tumbler.model.get(tumbler.currentIndex).realData;fontSelector.fontSelectChanged(fontSelector.curSelectedFont);//向外发信号//console.log(fontSelector.curSelectedFont);//console.log(tumbler.model.get(tumbler.currentIndex).realData)//console.log(tumbler.model.get(tumbler.currentIndex).displayData)//console.log(tumbler.model.get(tumbler.currentIndex).index)}// 根据字体名称设置当前选中的item,遍历Model,数据对比function changeIndexByFont(fontName){for(var i = 0; i < tumbler.model.count; ++i){if(tumbler.model.get(i).realData === fontName){tumbler.currentIndex = i;break;}}}}ListModel{id:fontListModel;ListElement{index:0realData:"SimHei"displayData:qsTr("黑体")}ListElement{index:1realData:"STFangsong"displayData:qsTr("华文仿宋")}ListElement{index:2realData:"STXihei"displayData:qsTr("华文细黑")}ListElement{index:3realData:"STXingkai"displayData:qsTr("华文行楷")}ListElement{index:4realData:"STXinwei"displayData:qsTr("华文新魏")}ListElement{index:5realData:"STLiti"displayData:qsTr("华文隶书")}ListElement{index:6realData:"STKaiti"displayData:qsTr("华文楷体")}ListElement{index:7realData:"STHupo"displayData:qsTr("华文琥珀")}ListElement{index:8realData:"STCaiyun"displayData:qsTr("华文彩云")}ListElement{index:9realData:"microsoft yahei"displayData:qsTr("微软雅黑")}}}

使用组件:

import QtQuick 2.9
import QtQuick.Window 2.2
import QtQuick.Controls 1.2Window {id:mainWindowvisible: truewidth: 640height: 480title: qsTr("Components")Rectangle {anchors.fill: parent;Button {id:buttonanchors.centerIn: parentwidth: 200;height: 36;text:qsTr("Choose Font");onClicked: {fontSelector.visible = !fontSelector.visible;}}// 字体选择器FontSelector { // 定义visible: falseid:fontSelectorx:button.x + button.width;y:button.y - fontSelector.height;}Connections{   // 字体选择器信号捕捉target: fontSelector;onFontSelectChanged:{console.log(newFont)}}}
}

QML Tumbler开发实践--字体选择循环列表相关推荐

  1. 移动应用开发实践-Task5-通过Json获取城市列表

    移动应用开发实践-Task5-通过Json获取城市列表 目标 1.City类 2.JsonUtil工具类(核心代码) 3.MainActivity调用工具类 4.运行结果 目标 封装一个Json转Ci ...

  2. Shell脚本基础 、 使用变量 、 条件测试及选择 、 列表式循环案例

    Shell脚本基础 . 使用变量 . 条件测试及选择 . 列表式循环案例 1 案例1:Shell脚本的编写及测试 1.1 问题 1.2 方案 1.3 步骤 2 案例2:重定向输出的应用 2.1 问题 ...

  3. 《JavaScript设计模式与开发实践》阅读摘要

    <JavaScript设计模式与开发实践>作者:曾探 系统的介绍了各种模式,以及js中的实现.应用,以及超大量高质量代码,绝对值得一读 面向对象的js 静态类型:编译时便已确定变量的类型 ...

  4. 校级选修课《软件开发实践》教学大纲(200807修订)

    软件开发实践 Software Developement Practice 课程代码:                        学    分:2.5 总学时: 40 学时             ...

  5. 计算机python程序设计导论,程序设计导论:Python计算与应用开发实践(原书第2版)...

    程序设计导论:Python计算与应用开发实践(原书第2版) 语音 编辑 锁定 讨论 上传视频 <程序设计导论:Python计算与应用开发实践(原书第2版)>是2018年机械工业出版社出版的 ...

  6. Xamarin.Android开发实践(十四)

    原文:Xamarin.Android开发实践(十四) Xamarin.Android之ListView和Adapter 一.前言 如今不管任何应用都能够看到列表的存在,而本章我们将学习如何使用Xama ...

  7. lua游戏开发实践指南光盘_Godot游戏开发实践之三:容易被忽视的Resource

    一.前言 首先,特大喜讯,奔走相告, Godot 爱好者们又有新的窝了--我们国人自建的 Godot 论坛:Godot中文社区已经正式开放,这里有一手的开发资源,最新的科技动向,开发上有啥问题可以随时 ...

  8. 20189200余超 2018-2019-2 移动平台应用开发实践作项目代码分析

    20189200余超 2018-2019-2 移动平台应用开发实践作项目代码分析 项目名称 小说阅读器 项目功能 注册登录 用户信息.用户密码.用户图像修改 书籍分类 书架 书籍搜索(作者名或书籍名) ...

  9. 20189200余超 2018-2019-2 移动平台应用开发实践第八周作业

    20189200余超 2018-2019-2 移动平台应用开发实践第八周作业 ListView 1.自定义BaseAdapter,然后绑定ListView的最简单例子 先看看我们要实现的效果图: 一个 ...

最新文章

  1. 网络营销期间交换链接多会有更多网络营销的机会吗?
  2. 卷积神经网络Convolutional Neural Network (CNN)
  3. erlang精要(19)-以函数作为参数的函数,返回函数的函数(2)
  4. 【CLRS】《算法导论》读书笔记(一):堆排序(Heapsort)
  5. Exploiting “BadIRET” vulnerability (CVE-2014-9322, Linux kernel privilege escalation)
  6. 【分析】浅谈C#中Control的Invoke与BeginInvoke在主副线程中的执行顺序和区别(SamWang)
  7. Mr.J--贪吃蛇demo
  8. Android之播放一首简单的音乐
  9. 孩子要经历什么后,才能懂得学业的重要和父母的不易?
  10. php网页顶端有乱码,四个常见html网页乱码问题及解决办法
  11. 智慧校园考试比赛系统-Python+Django
  12. WQM软件使用说明书
  13. 学生计算机重启删除文件,Delete.On.Reboot(重启时删除无用文件工具)
  14. android7.0官方高清壁纸,抢鲜体验!安卓7.0自带原生壁纸打包下载
  15. 十六、 Interpreter 解释器(行为型模式)
  16. 如何优雅的管理以及书写好代码
  17. github排版混乱
  18. 使用nginx搭建音视频点播服务——基于DASH协议
  19. 杭州阳陂湖湿地公园游览攻略
  20. 安装 Ubuntu 和 CentOS 双系统

热门文章

  1. [渝粤教育] 山东大学 2021秋中国武术文化(艺术英语) 参考 资料
  2. vs好用吗?vs2022下载。
  3. word两幅图并排并且插入题注不会乱
  4. UTC和本地时间互相转换
  5. 李希贵:教育改革最大的阻力来自我们内心
  6. recovery time和removal time
  7. Win11系统新建的excel表格怎么保存到桌面?
  8. 分析DLL搜索顺序劫持的原理
  9. mysql数据库事务的实现原理
  10. DESFire 学习之AUTH