QML键盘导航和高亮

这篇具有很好参考价值的文章主要介绍了QML键盘导航和高亮。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一 QML介绍

二 QML的使用场合

三 实例演示


一 QML介绍

QML是Qt Quick的缩写,它是一种新型的、面向对象的、跨平台的脚本语言,可以用来描述用户界面或应用程序的交互逻辑。QML可以在Qt应用程序中使用,也可以在其他JavaScript应用程序中使用。

QML使用XML语法来描述应用程序的用户界面,其中包括各种组件、布局、控件和事件处理程序等。这种语言非常易于学习和使用,因为它具有简单的语法、清晰的结构和易于理解的类型系统。此外,QML还支持自定义组件和自定义控件,使开发人员能够根据需要灵活地设计和重构用户界面。

QML可以帮助开发人员快速构建原生桌面应用程序、移动应用程序和Web应用程序等。由于它是Qt框架的一部分,因此可以利用Qt提供的丰富功能和工具,如Qt Creator、Qt Widgets等。因此,使用QML可以大大提高开发效率和应用程序的质量。

二 QML的使用场合

QML是一种用于描述应用程序用户界面的声明式编程语言,主要应用于移动应用程序、桌面应用程序和Web应用程序等领域。以下是QML主要应用场景:

  1. 移动应用程序:QML可以帮助开发人员快速构建原生移动应用程序,如游戏、音乐播放器、地图应用等。由于QML可以将用户界面分解为一个个小的元素,并且可以对这些元素进行美化和自定义,因此非常适合构建移动应用程序。
  2. 桌面应用程序:QML可以用于开发桌面应用程序,如窗口管理器、文本编辑器、数据分析工具等。QML可以将界面分解为各个小的部件,并且可以使用Qt提供的各种组件和工具来构建高效的桌面应用程序。
  3. Web应用程序:QML可以用于开发Web应用程序,如网页浏览器、表单验证器、媒体播放器等。由于QML可以将界面分解为小的元素,并且可以使用JavaScript来操作这些元素,因此非常适合构建Web应用程序。

QML是一种非常灵活和易于使用的编程语言,可以帮助开发人员快速构建高效的用户界面,并且可以在不同的应用程序领域中使用。

三 实例演示

当使用基于触摸方式的链表视图时,默认提供的视图已经足够使用。在使用键盘甚至仅仅通过方向键选择一个元素的场景下,需要有标识当前选中元素的机制。在QML中,这被叫做高亮。

视图支持设置一个当前视图中显示代理元素中的高亮代理。它是一个附加的代理元素,这个元素仅仅只实例化一次,并移动到与当前元素相同的位置。

在下面例子的演示中,有两个属性来完成这个工作。首先是focus属性设置为true,它设置链表视图能够获得键盘焦点。然后是highlight属性,指出使用的高亮代理元素。高亮代理元素的x,y与height属性由当前元素指定。如果宽度没有特别指定,当前元素的宽度也可以用于高亮代理元素。

在例子中,ListView.view.width属性被绑定用于高亮元素的宽度。关于代理元素的使绑定属性将在后面的章节讨论,但是最好知道相同的绑定属性也可以用于高亮代理元素。

1.import QtQuick 2.0
2.
3.Rectangle {
4.    width: 240
5.    height: 300
6.
7.    color: "white"
8.
9.    ListView {
10.        anchors.fill: parent
11.        anchors.margins: 20
12.
13.        clip: true
14.
15.        model: 100
16.
17.        delegate: numberDelegate
18.        spacing: 5
19.
20.        highlight: highlightComponent
21.        focus: true
22.    }
23.
24.    Component {
25.        id: highlightComponent
26.
27.        Rectangle {
28.            width: ListView.view.width
29.            color: "lightGreen"
30.        }
31.    }
32.
33.    Component {
34.        id: numberDelegate
35.
36.        Item {
37.            width: 40
38.            height: 40
39.
40.            Text {
41.                anchors.centerIn: parent
42.
43.                font.pixelSize: 10
44.
45.                text: index
46.            }
47.        }
48.    }
49.}

QML键盘导航和高亮

当使用高亮与链表视图(ListView)结合时,一些属性可以用来控制它的行为。highlightRangeMode控制了高亮如何影响视图中当前的显示。默认设置ListView.NoHighLighRange意味着高亮与视图中的元素距离不相关。

ListView.StrictlyEnforceRnage确保了高亮始终可见,如果某个动作尝试将高亮移出当前视图可见范围,当前元素将会自动切换,确保了高亮始终可见。

ListView.ApplyRange,它尝试保持高亮代理始终可见,但是不会强制切换当前元素始终可见。如果在需要的情况下高亮代理允许被移出当前视图。

在默认配置下,视图负责高亮移动到指定位置,移动的速度与大小的改变能够被控制,使用一个速度值或者一个动作持续时间来完成它。这些属性包括highlightMoveSpeed,highlightMoveDuration,highlightResizeSpeed和highlightResizeDuration。默认下速度被设置为每秒400像素,动作持续时间为-1,表明速度和距离控制了动作的持续时间。如果速度与动作持续时间都被设置,动画将会采用速度较快的结果来完成。

为了更加详细的控制高亮的移动,highlightFollowCurrentItem属性设置为false。这意味着视图将不再负责高亮代理的移动。取而代之可以通过一个行为(Bahavior)或者一个动画来控制它。

在下面的例子中,高亮代理的y坐标属性与ListView.view.currentItem.y属性绑定。这确保了高亮始终跟随当前元素。然而,由于我们没有让视图来移动这个高亮代理,我们需要控制这个元素如何移动,通过Behavior on y来完成这个操作,在下面的例子中,移动分为三步完成:淡出,移动,淡入。注意怎样使用SequentialAnimation和PropertyAnimation元素与NumberAnimation结合创建更加复杂的移动效果。文章来源地址https://www.toymoban.com/news/detail-433486.html

    Component {
        id: highlightComponent

        Item {
            width: ListView.view.width
            height: ListView.view.currentItem.height

            y: ListView.view.currentItem.y

            Behavior on y {
                SequentialAnimation {
                    PropertyAnimation { target: highlightRectangle; property: "opacity"; to: 0; duration: 200 }
                    NumberAnimation { duration: 1 }
                    PropertyAnimation { target: highlightRectangle; property: "opacity"; to: 1; duration: 200 }
                }
            }

            Rectangle {
                id: highlightRectangle
                anchors.fill: parent
                color: "lightGreen"
            }
        }
    }

到了这里,关于QML键盘导航和高亮的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • qml View3D使用介绍

    在Qt Quick 3D中, View3D 是一个用于展示 3D 内容的 QML 类型。 View3D 允许你将 3D 场景集成到 Qt Quick 2D 用户界面中,这意味着你可以在传统的 2D UI 元素(如按钮、文本和图像)与 3D 图形之间无缝地进行整合。 View3D 提供了一个视口,用于渲染 3D 场景。它可以包括多个 3D 对象,如

    2024年02月03日
    浏览(56)
  • QML键盘事件

    在QML中,当有一个按键按下或释放时,会产生一个键盘事件,将其传递给获得有焦点的QML项目(讲focus属性设置为true,则获得焦点)。 按键处理的基本流程: Qt接收密钥操作并生成密钥事件。 如果 QQuickWindow 是活动窗口,则密钥事件将传递给它。 关键事件由场景传递到 具

    2024年02月09日
    浏览(22)
  • QML 键盘事件

    作者: 一去、二三里 个人微信号: iwaleon 微信公众号: 高效程序员 和鼠标一样,键盘同样也提供了用户交互的能力,所以在介绍完《QML 鼠标事件》之后,是时候深入键盘事件了。 在 QML 中,有一个附加属性 - Keys,是专供可视元素进行按键处理的。当用户按下或释放一个按

    2024年02月10日
    浏览(19)
  • 96.qt qml-http之XMLHttpRequest介绍详解使用

    在QML中我们可以通过XMLHttpRequest 来实现http/https访问网络接口,接下来我们先来学习XMLHttpRequest类的常用部分、 由于QML的XMLHttpRequest少部分参数是没有的,所以本章来单独讲解下。 下章我们来实现旋转请求按钮以及通用的JSON请求模板方法 首先推荐一个http测试工具httpbin,该服务

    2024年02月08日
    浏览(25)
  • vue3简单写导航anchor示例(支持点击高亮和滚动判断高亮)

    function anchorClick(index) {   forceStop.value = true;   time = Date.now();   wheelRef.value.children[index].scrollIntoView({     block: \\\'start\\\',     behavior: \\\'smooth\\\'   });   // 给一些延时, 再点亮anchor, 同时不再限制scroll事件函数里面滚动高亮的判断   setTimeout(() = {     forceStop.value = false;     time = null;  

    2024年02月06日
    浏览(28)
  • 解决织梦DEDE导航栏默认首页无法高亮的问题

    默认织梦的首页没有设置高亮属性,只要其他栏目可以。以下代码可以解决这个问题: 默认织梦导航栏目,首页不可高亮,解决方案如下: 给a标签添加active类 currentstyle无效失效的修复办法:修改include/taglib/channel.lib.php   -----》 133行。if( ($row[\\\'id\\\']==$typeid || ($topid==$row[\\\'id\\\']

    2024年02月02日
    浏览(83)
  • Vue Element ui导航栏选中高亮,刷新后选中消失

    导航栏选中后重新刷新页面会发现选中的导航栏高亮消失了,或者跳到了其它选项,这里的思路就是定义方法,把路由存入到sessionStorage,页面重新加载的时候从sessionStorage中获取

    2024年02月15日
    浏览(38)
  • Vue:关于声明式导航中的 跳转、高亮、以及两个类名的定制

    实现导航高亮,实现方式其实,css,JavaScript , Vue ,都可以实现。 其实关于路由导航,我么可以使用vue-router提供的一个全局组件 router-link(来取代a标签)去实现。 router-link的两大特点(能跳转、能高亮) ① router-link 可以跳转,通过配置 to 属性指定路径。其实本质上还是 a 标

    2024年02月10日
    浏览(30)
  • 思科三层交换机与路由器的比较及使用网络场合探讨

    三层交换机与路由器的比较在大型局域网中,这种功能体现很完美,对掌握三层交换机很有帮助,但现在有些厂家的交换机也可以直接接Internet提供路由器功能。 三层交换机与路由器的比较 为了适应网络应用深化带来的挑战,网络在规模和速度方向都在急剧发展,局域网的速

    2024年02月05日
    浏览(33)
  • 【Vue】Mock.js介绍和使用与首页导航栏左侧菜单搭建

    目录 一、Mock.js 1.1 mockjs介绍 1.2 mock.js安装与配置 1.2.1 安装mock.js 1.2.2 引入mock.js 1.3 mock.js的使用 1.3.1 准备模拟数据 1.3.2 定义拦截路由 1.3.3 测试 二、首页导航栏左侧菜单搭建 2.1 自定义界面组件 (完整代码) 2.2 配置路由 2.3 组件显示折叠和展示图标 2.4 总线完成组件通信 2.

    2024年02月08日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包