当前位置: 首页 > article >正文

QML —— 遮罩功能,模拟软件头像功能(附源码)

效果

在这里插入图片描述

说明

     该遮罩功能使用了组件,Component 是Qt 框架或者开发者封装好的、只暴露必要接口的QML 类型,可以重复使用。要再QML 中嵌入Component 的定义,需要使用Component 对象。

代码

     main.qml

import QtQuick 2.9
import QtQuick.Window 2.2
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.14

Window
{
    visible: true
    width: 900
    height: 420

    ColumnLayout
    {
        anchors.centerIn: parent

        Text {text: qsTr("原图:");font.pixelSize: 20;color: "green"}
        RowLayout
        {
            spacing: 40
            IconComponent{id: srcImage1; width: 100;height: 100;}
            IconComponent{id: srcImage2; width: 100;height: 100;}
            IconComponent{id: srcImage3; width: 100;height: 100;}
            IconComponent{id: srcImage4; width: 100;height: 100;}
            IconComponent{id: srcImage5; width: 100;height: 100;}
            IconComponent{id: srcImage6; width: 100;height: 100;}
        }

        Rectangle{height: 50}

        Text {text: qsTr("遮罩:");font.pixelSize: 20;color: "green"}
        RowLayout
        {
            spacing: 40
            IconComponent{id: maskImage1; width: 100;height: 100;}
            IconComponent{id: maskImage2; width: 100;height: 100;}
            IconComponent{id: maskImage3; width: 100;height: 100;}
            IconComponent{id: maskImage4; width: 100;height: 100;}
            IconComponent{id: maskImage5; width: 100;height: 100;}
            IconComponent{id: maskImage6; width: 100;height: 100;}
        }
    }

    Component.onCompleted:
    {
        srcImage1.setSourceImage("qrc:/image/image/1.png")
        srcImage2.setSourceImage("qrc:/image/image/2.jpg")
        srcImage3.setSourceImage("qrc:/image/image/3.jpg")
        srcImage4.setSourceImage("qrc:/image/image/4.jpg")
        srcImage5.setSourceImage("qrc:/image/image/5.jpg")
        srcImage6.setSourceImage("qrc:/image/image/6.jpg")
        maskImage1.setSourceImageMask("qrc:/image/image/1.png")
        maskImage2.setSourceImageMask("qrc:/image/image/2.jpg")
        maskImage3.setSourceImageMask("qrc:/image/image/3.jpg")
        maskImage4.setSourceImageMask("qrc:/image/image/4.jpg")
        maskImage5.setSourceImageMask("qrc:/image/image/5.jpg")
        maskImage6.setSourceImageMask("qrc:/image/image/6.jpg")
    }
}


     IconComponent.qml

import QtQuick 2.0
import QtGraphicalEffects 1.14

Item
{
    Image
    {
        id: sourceimage
        sourceSize: Qt.size(parent.width,parent.height)
        smooth: true
        visible: false
    }

    Rectangle
    {
        id: mask
        width: parent.width
        height: parent.height
        radius: height/2
        color: "red"
        visible: false
    }

    OpacityMask
    {
        source: sourceimage
        anchors.fill: sourceimage
        maskSource: mask
    }

    // 显示原图
    function setSourceImage(imagePath)
    {
        sourceimage.source = imagePath
        sourceimage.visible= true
    }

    // 显示遮罩效果
    function setSourceImageMask(imagePath)
    {
        sourceimage.source = imagePath
    }
}

关注

笔者 - jxd


http://www.kler.cn/a/390148.html

相关文章:

  • 若依笔记(八):Docker容器化并部署到公网
  • Kafka参数了解
  • 软件测试面试题(800道)【附带答案】持续更新...
  • 如何为电子课程创造创意
  • Spark 的容错机制:保障数据处理的稳定性与高效性
  • 工业相机选取
  • python printf中文乱码
  • JedisException:Could not get a resource from the pool
  • SpringCloud 微服务消息队列灰度方案 (RocketMQ 4.x)
  • SQL 窗口函数
  • 什么是C/C++,有什么特点
  • 物联网学习路线来啦!
  • 道可云人工智能元宇宙每日资讯|2024国际虚拟现实创新大会将在青岛举办
  • cache写策略 操作系统
  • nginx 部署2个相同的vue
  • 241111.学习日志——【CSDIY】Cpp零基础速成
  • 2024年11月10日系统架构设计师考试题目回顾
  • 【算法速刷(9/100)】LeetCode —— 42.接雨水
  • 2024年9月青少年软件编程(C语言/C++)等级考试试卷(四级)
  • flask logger 使用 TimedRotatingFileHandler 报错 PermissionError 另一个程序正在使用此文件
  • NVR录像机汇聚管理EasyNVR多品牌NVR管理工具/设备:大华IPC摄像头局域网访问异常解决办法
  • 哪家云服务器好跑AI?瞄准AutoDL(附NVIDIA GPU 算力排名表)
  • Linux基础之病毒编写
  • Docker 操作指令
  • 如何设置el-date-picker的默认截止时间为“23:59:59”
  • 故事121