QML Text 点击交互与富文本
目录四种交互/富文本方案Text 可点击文本演示代码关键逻辑解析适用场景注意点Text 链接交互演示代码关键逻辑解析适用场景注意点Text 富文本HTML演示代码关键逻辑解析适用场景注意点Text Markdown 文本演示代码关键逻辑解析适用场景注意点对比表格运行验证扩展复用方向小结文本在界面里不只是用来读还可以点击、跳转、甚至承载格式化内容。这篇讲Text的四个进阶用法可点击文本、链接交互、HTML 富文本和 Markdown 文本。它们能让你的界面少套一层Button或WebView。四种交互/富文本方案需求方案复杂度文本点击反馈TextMouseArea低点击打开外链textFormat: Text.RichTextonLinkActivated低简单 HTML 富文本textFormat: Text.RichText中轻量 MarkdowntextFormat: Text.MarkdownText中这四种方案都基于Text本身不需要额外引入 WebView启动速度和内存占用都比嵌套浏览器小很多。Text 可点击文本Text本身不处理鼠标事件需要套一个MouseArea。这个 demo 展示了点击切换颜色、按下缩放、按钮样式、边框按钮四种常见交互效果。演示代码import QtQuick import QtQuick.Layouts FadeInAnimation { ColumnLayout { anchors.fill: parent anchors.margins: 20 spacing: 15 // ... 省略标题组件 TitleSeparator ... ColumnLayout { Layout.leftMargin: 20 spacing: 12 Text { id: clickText1 text: 点击我切换颜色 font.pointSize: 13 color: toggled ? #E91E63 : #1976D2 property bool toggled: false MouseArea { anchors.fill: parent onClicked: clickText1.toggled !clickText1.toggled } } Text { id: clickText2 text: 按下缩放效果 font.pointSize: 13 color: pressed ? #E91E63 : #333 property bool pressed: false MouseArea { anchors.fill: parent onPressed: { clickText2.pressed true clickText2.scale 0.9 } onReleased: { clickText2.pressed false clickText2.scale 1.0 } } Behavior on scale { NumberAnimation { duration: 100 } } } Rectangle { width: 120 height: 36 radius: 4 color: buttonArea.pressed ? #1565C0 : #1976D2 Text { anchors.centerIn: parent text: 按钮样式 color: white font.pointSize: 12 } MouseArea { id: buttonArea anchors.fill: parent } Behavior on color { ColorAnimation { duration: 100 } } } Rectangle { id: borderBtn width: 120 height: 32 radius: 16 border.color: borderArea.pressed ? #E91E63 : #1976D2 border.width: 2 color: borderArea.pressed ? #fce4ec : white Text { anchors.centerIn: parent text: 边框按钮 color: borderBtn.border.color font.pointSize: 12 } MouseArea { id: borderArea anchors.fill: parent } } } Item { Layout.fillHeight: true } } }关键逻辑解析MouseArea必须anchors.fill: parent才能覆盖整个文本区域用自定义布尔属性记录状态再用它驱动color或scaleBehavior on scale/Behavior on color让变化有过渡动画做按钮样式时通常用Rectangle包Text再套MouseArea适用场景可点击文本适合做筛选标签、展开/收起按钮、文字型操作入口。相比Button它更轻量样式完全由你控制适合做扁平化设计的界面。注意点MouseArea会拦截事件如果文本放在ScrollView或ListView里要注意手势冲突。另外可点击文本最好给用户一些视觉反馈比如颜色变化或缩放否则用户不知道能点。Text 链接交互用textFormat: Text.RichText支持 HTML 标签点击链接时触发linkActivated。这个 demo 展示了两个可点击的外部链接。演示代码import QtQuick import QtQuick.Layouts FadeInAnimation { ColumnLayout { anchors.fill: parent anchors.margins: 20 spacing: 15 // ... 省略标题组件 TitleSeparator ... ColumnLayout { Layout.leftMargin: 20 spacing: 12 Text { text: 点击访问 a hrefhttps://qt.ioQt 官网/a textFormat: Text.RichText font.pointSize: 12 linkColor: #1976D2 onLinkActivated: (link) { Qt.openUrlExternally(link) } } Text { text: 点击打开 a hrefhttps://doc.qt.io/qt-6/qml-qtquick-text.htmlText 文档/a textFormat: Text.RichText font.pointSize: 12 linkColor: #1976D2 onLinkActivated: (link) { Qt.openUrlExternally(link) } } } Item { Layout.fillHeight: true } } }关键逻辑解析textFormat: Text.RichText让Text按 HTML 解析linkColor控制超链接颜色onLinkActivated接收点击的 URL再用Qt.openUrlExternally打开浏览器适用场景链接交互适合用户协议、隐私政策、帮助文档、关于页面里的外部链接。不需要单独放Button一段文字里就能嵌入可点击的链接。注意点onLinkActivated收到的是字符串 URL不要直接执行。建议做白名单校验或限制为https://开头避免恶意链接。另外Qt.openUrlExternally在部分平台可能需要额外权限。Text 富文本HTMLText.RichText支持常用 HTML 标签适合显示带格式的静态内容。这个 demo 展示了粗体、斜体、下划线、删除线、颜色、字号、标题和段落。演示代码import QtQuick import QtQuick.Layouts FadeInAnimation { ColumnLayout { anchors.fill: parent anchors.margins: 20 spacing: 15 // ... 省略标题组件 TitleSeparator ... Text { text: b粗体/b i斜体/i u下划线/u s删除线/s textFormat: Text.RichText font.pointSize: 12 } Text { text: font colorred红色/font font colorgreen绿色/font font colorblue蓝色/font textFormat: Text.RichText font.pointSize: 12 } Text { text: font size5大号/font font size2小号/font textFormat: Text.RichText font.pointSize: 12 } Text { text: h4标题/h4p段落文本/p textFormat: Text.RichText font.pointSize: 10 } // ... 省略说明文本 ... Item { Layout.fillHeight: true } } }关键逻辑解析常用标签包括b、i、u、s、font、h1-h6、p、br、a、img。不需要引入 WebView比TextEdit轻量很多。适用场景HTML 富文本适合提示说明、格式化内容、简单的图文混排。比如一个弹窗里的操作提示用b标出重点比放多个Text组件更紧凑。注意点Text.RichText支持的 HTML 子集有限复杂布局不要用。如果需要 CSS、表格、脚本应该改用WebEngineView。另外图片标签img只支持本地路径或资源路径加载网络图片需要额外处理。Text Markdown 文本Qt 6 的Text支持 Markdown适合显示简单的格式化说明。这个 demo 展示了粗体、斜体、删除线、无序列表和有序列表。演示代码import QtQuick import QtQuick.Layouts FadeInAnimation { ColumnLayout { anchors.fill: parent anchors.margins: 20 spacing: 15 // ... 省略标题组件 TitleSeparator ... ColumnLayout { Layout.leftMargin: 20 spacing: 12 Text { text: **粗体** *斜体* ~~删除线~~ textFormat: Text.MarkdownText font.pointSize: 12 } Text { width: 200 text: - 列表项1\n- 列表项2\n- 列表项3 textFormat: Text.MarkdownText font.pointSize: 11 wrapMode: Text.WordWrap } Text { width: 200 text: 1. 有序项1\n2. 有序项2\n3. 有序项3 textFormat: Text.MarkdownText font.pointSize: 11 wrapMode: Text.WordWrap } } // ... 省略说明文本 ... Item { Layout.fillHeight: true } } }关键逻辑解析textFormat: Text.MarkdownText启用 Markdown 解析支持 CommonMark 和 GitHub 扩展多行内容用\n分隔配合wrapMode使用适用场景Markdown 适合更新日志、版本说明、用户反馈内容、从服务端拉取的富文本。因为 Markdown 源码比 HTML 更简洁后端同学也更容易维护。注意点Qt 的 Markdown 解析器支持范围有限表格、任务列表等高级特性可能渲染不出来。上线前要把目标语法在 demo 里跑一遍确认效果。另外多行 Markdown 文本一定要记得设置wrapMode否则长列表会溢出容器。对比表格需求方案适用场景文本可点击TextMouseArea自定义按钮、标签筛选点击打开外链textFormat: Text.RichTextonLinkActivated用户协议、帮助文档简单富文本Text.RichText提示说明、格式化内容轻量 MarkdownText.MarkdownText更新日志、简介运行验证Qt Creator 打开qml_text/CMakeLists.txt按CtrlR运行在左侧导航切换可点击文本、链接交互、富文本 HTML、Markdown扩展复用方向把可点击文本封装成ClickableText组件支持 normal / hover / pressed 三种状态色用Text.RichText做带图文的帮助页用Text.MarkdownText显示从服务器拉取的 Markdown 说明给链接文本增加复制到剪贴板的功能除了打开浏览器还能复制 URL小结Text组件在交互和富文本方面的能力经常被低估。配合MouseArea可以做轻量按钮配合RichText可以做链接和简单 HTML配合MarkdownText可以展示后端维护的说明内容。这些方案的共同优势是轻量、启动快、不依赖 WebView。只要需求不复杂优先考虑用Text解决而不是直接引入更重的组件。已验证环境Qt 版本Qt 6.11.1操作系统Windows 11完整代码https://gitcode.com/u011186532/qml_demo/tree/main/qml_text

相关新闻

【苍穹外卖 Day09|订单管理与配送范围校验】

【苍穹外卖 Day09|订单管理与配送范围校验】

前言 Day09 的实战围绕订单模块展开:用户需要能查看和复用历史订单,商家需要按订单状态处理业务,同时系统还要在下单前判断收货地址是否处于配送范围内。 这几个功能共享同一条主线:订单状态必须按照业务规则流转,任何…

2026/10/18 1:58:37 阅读更多 →
AI生成界面质量保障:组件语义快照实践指南

AI生成界面质量保障:组件语义快照实践指南

1. 组件语义快照:AI生成界面的质量守门人在AI直接生成用户界面的新时代,我们面临一个根本性挑战:如何确保机器输出的界面不仅能用,而且用得明白。去年我在负责某企业级AI设计系统时,曾遇到一个典型案例——同一个红色按…

2026/10/18 2:02:00 阅读更多 →
Spring Boot集成LDAP实现企业级用户管理

Spring Boot集成LDAP实现企业级用户管理

1. 项目概述在企业级应用开发中,用户与组织数据管理是一个常见且关键的需求。传统的关系型数据库虽然能够满足基本存储需求,但在跨系统用户数据同步、权限集中管理等方面存在明显短板。LDAP(轻量级目录访问协议)作为一种专门优化的…

2026/10/17 20:33:14 阅读更多 →

最新新闻

纠正一句默认配置:入门档不等于日常档编程

纠正一句默认配置:入门档不等于日常档编程

很多笔记把入门档写成默认项。这句需要加条件。 | 用法 | 先看哪一档 | 还要核对 | |---|---|---| | 偶尔试一次 | 入门档 | 期限。短期限和长期限不能只比总价 | | 每个工作日都在用 | 日常档 | 够不够当天的活 | | 卡在一件具体任务 | 更高档 | 页面写明多了什么&#xff0c…

2026/10/19 2:13:32 阅读更多 →
【03】N_Bs 和 N_Cr 超时的具体触发条件以及对应现象

【03】N_Bs 和 N_Cr 超时的具体触发条件以及对应现象

N_Bs:等流控帧超时 N_Bs 是发送方等待接收方回复流控帧 FC 的最大时间。 触发条件通常有: 发送方发了 首帧 FF 后,在 N_Bs 内没有收到接收方的 FC;如果接收方先回了 FSWait,发送方后续在 N_Bs 内仍未收到新的 FC&#…

2026/10/19 2:13:32 阅读更多 →
小白验证系统新增插件市场破解日志功能

小白验证系统新增插件市场破解日志功能

1.新增加插件市场2.新增加破解日志查看 附api接口文档{"action": "OD破解","actionType": "od","log": "[2026-10-17 09:32:18] 检测到OllyDbg附加进程,命中OD破解特征,已拦截","shot…

2026/10/19 2:13:32 阅读更多 →
会议纪要哪个软件比较准确?实测智在记录、讯飞听见、通义听悟、Otter.ai 四款工具,附场景选型清单

会议纪要哪个软件比较准确?实测智在记录、讯飞听见、通义听悟、Otter.ai 四款工具,附场景选型清单

一、开一场会容易,把会"记明白"很难很多职场人都有过这样的经历:两小时的会议结束,录音躺在手机里,纪要却迟迟出不来。不是不想写,而是整理成本太高——听录音、摘重点、理逻辑、分待办,一套流程…

2026/10/19 2:13:32 阅读更多 →
从手工到自动:企业知识库的 2 步改造记录

从手工到自动:企业知识库的 2 步改造记录

## 背景这篇记录一次把企业知识库流程工程化的尝试。## 核心能力- 全程本地运行,原始文档与知识数据不出电脑- 8 步流水线自动化:解析→结构化→质检→复核→分片→向量库→验收- 内置本地大模型,离线推理零成本,支持三通道模型切…

2026/10/19 2:13:32 阅读更多 →
高中英语课本合集:8版本+191个PDF,必修/选择性必修/选修全收录,附语法写作参考资料

高中英语课本合集:8版本+191个PDF,必修/选择性必修/选修全收录,附语法写作参考资料

资源概况 这是一套面向高中阶段英语学习者的高中英语电子课本合集。资源涵盖8个主流版本的教材,以PDF格式提供,文件命名中标注了"高清教材"字样,均为扫描版电子版教材,总文件数量约191个,总容量约5.3GB。 配…

2026/10/19 2:12:32 阅读更多 →

日新闻

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

简介:本资源为电源技术方向的学术研究文档,聚焦介质阻挡放电型臭氧发生器电源的频率跟踪型PWM控制策略,面向电力电子、高压电源及臭氧应用领域的科研人员与工程技术人员。针对负载呈容性、等效电容随外加电压升高而增大、谐振频率随之漂移的难…

2026/10/19 0:00:47 阅读更多 →
Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 0:00:47 阅读更多 →
HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

【免费下载链接】HundredCV-Chat 项目地址: https://ai.gitcode.com/hf_mirrors/Jax-dan/HundredCV-Chat 点击查看 免费下载 HundredCV-Chat 是一个由 100 位青年简历数据开发而来的中文多轮对话数据集,共包含 24,750 组日常闲聊对话和 4,871 个话题标签…

2026/10/19 0:00:47 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/19 1:30:52 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →