美文网首页Qt QML 杂记
QML 解析超链接及定制链接样式实战

QML 解析超链接及定制链接样式实战

作者: 赵者也 | 来源:发表于2018-08-29 15:28 被阅读2次

QML link show and custom link color

import QtQuick 2.9
import QtQuick.Window 2.2

Window {
    id: root
    visible: true
    width: 800
    height: 600
    title: qsTr("Hello World")
    color: "#F1F1F1"

    readonly property var strRegex: /(https?:\/\/)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/gi
    readonly property var emailPattern: /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}$/
    readonly property var strRegex1: /^[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)$/

    readonly property var textRegExp: new RegExp(strRegex)
    readonly property var textRegExp1: new RegExp(strRegex1)
    readonly property var emailRegExp: new RegExp(emailPattern)

    Rectangle {
        id: rect
        anchors.fill: parent
        color: "#80000000"
        MouseArea {
            anchors.fill: parent
            onClicked: {
                console.log("ZDS===============>click backgroud")
            }
        }

        Text {
            id: source
            text: "test testtesttesttesttest testhttps://www.foufos.gr/kino testtesttesthttp://www.foufos.gr/kino 255.255.255.0 192.168.1.1 www.baidu.com www.baidu.com imtoby@126.com"
            anchors.centerIn: parent
            anchors.verticalCenterOffset: -30
        }

        Text {
            id: result
            textFormat: Text.RichText
            text: source.text.replace(textRegExp, function(param) {
                var href
                if (emailRegExp.exec(param) != null) {
                    href = "mailto:" + param
                } else {
                    var href1
                    if (((href1 = textRegExp1.exec(param)) != null) && (href1 !== param)) {
                        href = "http://" + param
                    } else {
                        href = param
                    }
                }
                return "<a href='" + href + ("' style='color:\"%1\";text-decoration:%2'>")
                .arg(hoveredLink === href ? "#00FFFF" : "#FFFF00")
                .arg(hoveredLink === href ? "underline" : "none") + param + "</a>"
            })
            anchors.centerIn: parent
            anchors.verticalCenterOffset: 30
            onLinkActivated: {
                console.log("ZDS====================> link: ", link)
                Qt.openUrlExternally(link)
            }

            MouseArea {
                anchors.fill: parent
                acceptedButtons: Qt.NoButton
                cursorShape: parent.hoveredLink ? Qt.PointingHandCursor : Qt.ArrowCursor
            }
        }
    }

}

运行效果如下:

result

相关文章

  • QML 解析超链接及定制链接样式实战

    QML link show and custom link color 运行效果如下:

  • Qml超链接

    文本使用html超链接显示, 被点击的时候调用Qt.openUrlExternally来使用默认应用打开超链接 需...

  • html中修改超链接a标签的样式

    修改a标签的默认样式 正常的超链接写法,未加任何自定义css样式: 超链接 点击链接之前的样式: 点击链接之后的样...

  • 超链接样式

    超链接伪类 a:link a:visited a:hover a:active :hover可以用于任何元素鼠标经...

  • 超链接样式

    学点不同的超链接 此时鼠标停留在一个超链接时会出现白色背景。效果看下图

  • 超链接访问过后 hover 样式就不出现了

    超链接访问过后 hover 样式就不出现了 被点击访问过的超链接样式不在具有 hover 和 active 了。解...

  • 10.超链接样式-CSS基础

    一、超链接伪类 1.何为超链接伪类 在CSS中,使用超链接伪类来定义超链接在鼠标点击的不同时期的样式。 (1)语法...

  • document下的集合

    document下的集合 1,获取所有超链接 document.links 改变超链接样式 (存在兼容性) ...

  • 前端教程:链接伪类控制超链接

    定义超链接时,为了提高用户体验,经常需要为超链接指定不同的状态,使得超链接在点击前、点击后和鼠标悬停时的样式不同。...

  • css知识点

    超链接访问过后hover样式就不出现的问题是什么?如何解决? 被点击访问过的超链接样式不在具有hover和acti...

网友评论

    本文标题:QML 解析超链接及定制链接样式实战

    本文链接:https://www.haomeiwen.com/subject/gkqkwftx.html