QML Text部件的使用

一个简单的Text代码 

Text {
    id: txt
    text: qsTr("文本123@abc\n数量的")
    color: "blue"
}

效果:

Text一般用于显示文本,例如可以给Button或者Rectangle等部件提供文本的显示;

1.文本常用

contentWidth        文本的宽度

contentHeight        文本的高度

lineCount                文本的行数

lineHeight                文本行之间的间距

Text {
    id: txt
    text: qsTr("文本123@abc\n数量的")
    color: "blue"

    lineHeight: 5   // 设置每一行文本的上下间距
    Component.onCompleted: {    // 程序启动时就会调用
        // 获取文本的宽度和高度
        console.log("文本的宽度:", contentWidth)
        console.log("文本的高度:", contentHeight)

        // 文本的行数
        console.log("lineCount:", lineCount)
        // 文本的行间距
        console.log("lineHeight:", lineHeight)
    }
}

font.bold                        设置字体加粗

font.family                        设置字体

font.italic                        设置字体斜体

font.letterSpacing        设置文本左右间的间距        例如:a    b    你好    c

font.pixelSize                设置字体的像素大小,与磅值二选一

font.pointSize                设置字体的磅值大小,与像素二选一

font.underline                设置字体下划线

Text {
    id: txt
    text: qsTr("文本123@abc\n数量的")
    color: "blue"

    font.bold: true             // 字体加粗
    font.family: "华文隶书"     // 字体
    font.italic: true           // 斜体
    font.letterSpacing: 20      // 字之间的间距
    font.pixelSize: 20          // 字体的像素大小,与磅值二选一
    font.pointSize: 20          // 字体的磅值大小,与像素二选一
    font.underline: true        // 下划线
}

2.文本省略

当一个文本过长,超出显示区域时,那么就需要设置省略显示,才符合感官;

通过 elide 属性可以进行设置;

  • Text.ElideNone - the default
  • Text.ElideLeft
  • Text.ElideMiddle
  • Text.ElideRight
Rectangle {
    width: 100
    height: 50
    anchors.centerIn: parent    // 居中
    border.color: "black"

    Text {
        id: txt
        anchors.fill: parent
        text: qsTr("sdfljslkfjlsdfj苏我欸机构为根据")

        // 文本省略
        elide: Text.ElideRight  // Text.ElideLeft   Text.ElideMiddle
    }
}

3.文本显示格式

即可以支持富文本格式,即HTML格式,或者Markdown格式;

默认是支持html格式的;

  • Text.AutoText (default)
  • Text.PlainText
  • Text.StyledText
  • Text.RichText
  • Text.MarkdownText

Column {
      Text {
          font.pointSize: 16
          textFormat: Text.AutoText     // 默认文本格式,支持富文本(html语法)
          text: "<b>Hello</b> <i>World!</i>"
      }
      Text {
          font.pointSize: 16
          textFormat: Text.RichText     // 富文本格式(html语法)
          text: "<b>Hello</b> <i>World!</i>"
      }
      Text {
          font.pointSize: 16            // 纯文本格式
          textFormat: Text.PlainText
          text: "<b>Hello</b> <i>World!</i>"
      }
      Text {
          font.pointSize: 16            // Markdown格式
          textFormat: Text.MarkdownText
          text: "**Hello** *World!*"
      }
  }

4.文本换行

第二点介绍了太长可以省略,现在介绍如何换行;

换行有很多种方式,可以根据单词换行,直接换行等;

  • Text.NoWrap (default) - 默认
  • Text.WordWrap - 根据单词进行换行
  • Text.WrapAnywhere - 换行可以在一行中的任何一点完成,即使换行发生在一个单词的中间。
  • Text.Wrap - 如果可能,换行发生在字边界;否则,它将发生在行内适当的点,甚至在一个单词的中间。

一般我们只使用,Text.WordWrap

Rectangle {
    id: rect
    width: 100
    height: 150
    border.color: "black"

    Text {
        id: txt
        text: qsTr("hello how are you? i'm find. 谢谢,非常感谢!一二三四五六七八九十")
        anchors.fill: parent

        // Text.WordWrap:换行
        wrapMode: Text.WordWrap
    }
}

5.超链接

使用富文本方式即可获得超链接的效果;

text: <a href=\"http://qt-project.org\">Qt Project website</a>.

onLinkActivated: { }         点击超链接文本时触发,可以在这里处理页面跳转 link 可获得当前链接

onLinkHovered: { }                鼠标进来悬浮和出去时触发,link 可获得当前链接

onHoveredLinkChanged: { }         链接改变时触发,hoveredLink 可获得改变的链接

Rectangle {
    id: rect
    width: 300
    height: 150
    border.color: "black"

    Text {
        id: txt
        textFormat: Text.RichText
        text: "See the <a href=\"http://qt-project.org\">Qt Project website</a>."

        // 点击文本超链接时触发
        onLinkActivated: {
            console.log(link + " link activated")
        }
        // 文本超链接,鼠标移动进来和出去触发
        onLinkHovered: {
            console.log("hover:", link)
        }
        // 文本超链接,改变时触发
        onHoveredLinkChanged: {
            console.log("hover link changed: ", hoveredLink)
        }
    }
}

如果希望鼠标悬浮时指针改变为手指,即改变鼠标光标,可以使用之前学习的 MouseArea 鼠标事件 进行处理;

cursorShape: Qt.PointingHandCursor

不过需要注意的是,设置了鼠标事件,点击连接时 onLinkActivated: { }  就无法出发了,因为点击事件被鼠标给拦截了;

如果希望处理点击事件,就得在鼠标中使用  onClicked: { } 进行处理;

Rectangle {
    id: rect
    width: 300
    height: 150
    border.color: "black"

    Text {
        id: txt
        textFormat: Text.RichText
        text: "See the <a href=\"http://qt-project.org\">Qt Project website</a>."

        MouseArea {
            anchors.fill: parent
            cursorShape: Qt.PointingHandCursor

            // 如果设置了鼠标,那么点击时间只能在鼠标这里处理,因为被鼠标事件拦截了
            onClicked: {
                console.log("mouse link activated")
            }
        }
    }
}

完!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/978094.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

《Android-RecyclerView实现封面滑动到指定位置放大》---ViewPager封面指示器

一、实现效果 二、关键代码 1、自定义:LinearLayoutManager 指定位置放大item import android.content.Context; import android.util.DisplayMetrics; import android.view.View; import android.view.ViewGroup;import androidx.recyclerview.widget.LinearLayoutManager;…

【Bug】natten:安装报错(临近注意力机制的高效cuda内核实现)

正常安装natten报错 pip install natten 报错 可以尝试使用以下网站进行安装 https://shi-labs.com/natten/ 可以根据自己的cuda与pytorch版本进行安装 之间复制命令即可&#xff0c;不需要进行任何修改

智能合约安全 | 合约无效化攻击

目录&#xff1a; 智能合约安全 合约无效化攻击 合约自毁函数 selfdestruct 攻击实现 漏洞防御 总结 智能合约安全 合约无效化攻击 合约无效化攻击类同于web安全中的逻辑漏洞中的一种 我们这里拿一个典型的例子来讲解 有这样一份智能合约, 每个人可以向其中发送1 eth 第七个…

Linux:(3)

一&#xff1a;Linux和Linux互传&#xff08;压缩包&#xff09; scp:Linux scp 命令用于 Linux 之间复制文件和目录。 scp 是 secure copy 的缩写, scp 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。 scp 是加密的&#xff0c;rcp 是不加密的&#xff0c;scp 是…

qt-C++笔记之QtCreator新建项目即Create Project所提供模板的逐个尝试

qt-C笔记之QtCreator新建项目即Create Project所提供模板的逐个尝试 code review! 文章目录 qt-C笔记之QtCreator新建项目即Create Project所提供模板的逐个尝试1.Application(Qt):Qt Widgets Application1.1.qmake版本1.2.cmake版本 2.Application(Qt):Qt Console Applicati…

学习threejs,Materials常量汇总

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️Materials常量汇总1.1.1 面…

SOC-ATF 安全启动BL1流程分析(1)

一、ATF 源码下载链接 1. ARM Trusted Firmware (ATF) 官方 GitHub 仓库 GitHub 地址: https://github.com/ARM-software/arm-trusted-firmware 这是 ATF 的官方源码仓库&#xff0c;包含最新的代码、文档和示例。 下载方式&#xff1a; 使用 Git 克隆仓库&#xff1a; git…

AI如何改变传统工厂的生产模式?

随着第四次工业革命的浪潮席卷全球&#xff0c;制造业的数字化转型成为企业在竞争中脱颖而出的关键。过去&#xff0c;传统制造业往往依赖于大量的人工操作和低效率的管理流程&#xff0c;而如今&#xff0c;智能化、自动化、数据化已经成为未来制造业的必由之路。从车间到云端…

Deepseek开源周第三天:DeepGEMM发布

Deepseek开源周第三天&#xff1a;DeepGEMM发布 前言 上周deepseek宣布&#xff0c;将在本周陆续发布五个开源项目&#xff0c;这些库已经在生产环境中经过了记录、部署和实战测试。 今天是deepseek开源周的第三天&#xff0c;deepseek发布了一个名为 DeepGEMM 的项目&#x…

【组态PLC】基于三菱西门子S7-200PLC和组态王液料混合系统组态设计【含PLC组态源码 M016期】

控制要求 总体控制要求&#xff1a;如面板图所示&#xff0c;本装置为三种液体混合模拟装置&#xff0c;由液面传感器SL1、SL2、SL3&#xff0c;液体A、B、C阀门与混合液阀门由电磁阀YV1、YV2、YV3、YV4&#xff0c;搅匀电机M&#xff0c;加热器H&#xff0c;温度传感器T组成。…

Qt Creator + CMake 构建教程

此教程基于: Qt 6.7.4Qt Creator 15.0.1CMake 3.26.4 Qt 6 以下的版本使用 CMake 构建可能会存在一些问题. 目录 新建窗体工程更新翻译添加资源软件部署(Deploy) 此教程描述了如何一步步在 Qt Creator 中使用 CMake 构建应用程序工程. 涉及 新建窗体工程, 更新翻译, 添加资源, …

内网渗透测试-Vulnerable Docker靶场

靶场来源&#xff1a; Vulnerable Docker: 1 ~ VulnHub 描述&#xff1a;Down By The Docker 有没有想过在容器中玩 docker 错误配置、权限提升等&#xff1f; 下载此 VM&#xff0c;拿出您的渗透测试帽并开始使用 我们有 2 种模式&#xff1a; - HARD&#xff1a;这需要您将 d…

【JavaEE】SpringMVC获取HTTP中的元素

目录 一、获取URL中的参数PathVariable二、上传⽂件RequestPart三、获取Cookie/Session3.1 HttpServletRequest和 HttpServletResponse3.2 获取Cookie3.2.1 使用HttpServletRequest3.2.2 使用注解CookieValue 3.3 设置session3.4 获取session3.4.1 使用HttpServletRequest3.4.2…

【构建工具】Gradle Kotlin DSL中的大小写陷阱:BuildConfigField

在Android开发当中&#xff0c;BuildConfig是一个非常有用的功能&#xff0c;它允许我们在构建过程中定义常量&#xff0c;并在运行时使用它们。But&#xff01;&#xff01;当我们从传统的Groovy DSL迁移到Kotlin DSL时或者被Android Studio坑的时候&#xff0c;有一些细微的差…

递归、搜索与回溯第二讲:二叉树中的深搜 穷举vs暴搜vs深搜vs回溯vs剪枝

递归、搜索与回溯第二讲&#xff1a;二叉树中的深搜 && 穷举vs暴搜vs深搜vs回溯vs剪枝 1.计算布尔二叉树的值2.求根节点到叶结点数字之和3.二叉树剪枝4.验证二叉搜索树5.二叉搜索树中第K小的元素6.二叉树的所有路径7.全排列8.子集 1.计算布尔二叉树的值 2.求根节点到叶…

可编辑PPT | DeepSeek如何赋能职场应用

这个PPT的核心内容是介绍DeepSeek如何赋能职场应用&#xff0c;从提示语技巧到多场景应用的详细解读。PPT首先介绍了DeepSeek的背景和团队&#xff0c;展示了其在AI领域的多项赛事奖项和研究成果&#xff0c;突出了其在人机协同和人机共生领域的专业能力。接着&#xff0c;PPT详…

网络层(Internet Layer)

&#x1f308; 个人主页&#xff1a;Zfox_ &#x1f525; 系列专栏&#xff1a;Linux 目录 &#x1f680; &#xff1a;&#x1f525; 前言 &#x1f98b; IP 地址&#xff1a;网络中的“门牌号”&#x1f98b; IP 地址的组成&#x1f98b; IPv4 到 IPv6 的过渡 一&#xff1a;…

final / 抽象类与抽象方法 / 接口

1. final 关键字 final&#xff1a;最终的 1.final可以用来修饰的结构&#xff1a;类&#xff0c;方法&#xff0c;变量 2.final用来修饰一个类&#xff1a;此类不能被其它类继承&#xff1b; 如 String类&#xff0c;System类&#xff0c;StringBuffer类 3.final用来修饰…

DeepSeek开源周Day1:FlashMLA引爆AI推理性能革命!

项目地址&#xff1a;GitHub - deepseek-ai/FlashMLA 开源日历&#xff1a;2025-02-24起 每日9AM(北京时间)更新&#xff0c;持续五天&#xff01; ​ 一、开源周震撼启幕 继上周预告后&#xff0c;DeepSeek于北京时间今晨9点准时开源「FlashMLA」&#xff0c;打响开源周五连…

9.编写负载均衡模块|编写judge功能|postman进行调试(C++)

编写负载均衡模块 代码整体结构 oj_control.hpp // code: #include... // input: "" void Judge(const std::string &number, const std::string in_json, std::string *out_json) {// 0. 根据题目编号&#xff0c;直接拿到对应的题目细节// 1. in_json进行反…