Qt 实现不规则的部件或者窗口

news2025/1/13 13:07:09

1、实现不规则的部件
1.1 工程目录
在这里插入图片描述
1.2 界面实现
在这里插入图片描述
1.3 widget.cpp

#include "widget.h"
#include <QPixmap>
#include <QBitmap>
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    
    ui->label->setFixedSize(105,74);// dog.png 图片的宽高
    QPixmap pixmap(":/images/dog.png");// dog.png 一定是没有背景(背景透明)的图片
    ui->label->setPixmap(pixmap);
    ui->label->setMask(pixmap.mask());// 为 label 部件设置遮罩
}

Widget::~Widget()
{
    delete ui;
}

1.4 图片一定是没有背景(背景透明)的图片,如下图
请添加图片描述

1.5 运行效果:标签部件显示成了图片的形状
在这里插入图片描述
2、实现不规则的窗口
2.1 工程目录
在这里插入图片描述
2.2 界面实现
在这里插入图片描述

2.3 widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT
    
public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
    
private:
    Ui::Widget *ui;
protected:
    /**
     * @brief 在 widget 上绘制图片
     */
    void paintEvent(QPaintEvent *event) override;
    /**
     * @brief 点击 widget 关闭窗口
     */
    void mousePressEvent(QMouseEvent *event) override;
};
#endif // WIDGET_H

2.4 widget.cpp

#include "widget.h"
#include "ui_widget.h"
#include <QPixmap>
#include <QBitmap>
#include <QPainter>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    
    QPixmap pixmap(":/images/dog.png");
    /**
      因为 QWidget 不能像 QLabel 那样直接给部件添加图片,所以要使用 paintEvent 方法在 QWidget 上绘制
      **/
    this->resize(pixmap.size());// 设置窗口大小为图片大小
    this->setMask(pixmap.mask());// 为窗口设置遮罩
}

Widget::~Widget()
{
    delete ui;
}

/**
 * @brief 在 widget 上绘制图片
 */
void Widget::paintEvent(QPaintEvent *event)
{
    QPainter painter(this);
    painter.drawPixmap(0,0,QPixmap(":/images/dog.png"));
}

/**
 * @brief 点击 widget 关闭窗口
 */
void Widget::mousePressEvent(QMouseEvent *event)
{
    this->close();
}

2.5 运行效果:widget窗口显示成了图片的形状
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AI人工智能_Prompt提示词工程如何生成API接口文档

AI人工智能_Prompt提示词工程如何生成API接口文档&#xff1f;在与AI大模型的交互中&#xff0c;每当我们输入一段文字&#xff0c;无论是问题、命令还是陈述&#xff0c;这段文字就是一个Prompt。 Prompt提示词工程&#xff08;Prompt Engineering&#xff09;是一种技术或方…

【C++】—— string 类的了解与使用

【CPP】—— string类的了解与使用 1、 为什么学习string 类1.1、 C语言中的字符串1.2、 面试题中更多以 string 类出现 2、 标准库中的 string 类3、 string 的默认成员函数3.1、 string 的构造与拷贝构造3.2、 string 的赋值重载3.3、 string 的析构函数 4、 operator[ ]4.1、…

ADAS---基于检测框的单目测距方法

1.1.模型求解法方法解读&#xff1a; Yolo模型可以输出被检测物体的置信度、类别及检测框的中心点坐标(xc,yc)及宽高(w,h)等信息&#xff0c;选取车辆检测框底部的中点作为距离测量的特征点&#xff0c;其计算公式如下&#xff1a; 车辆测距示意图如下&#xff1a; 图中&#…

Zabbix之ubuntu环境下最新版zabbix-server7.0安装

一、zabbix7.0简介 Zabbix 7.0 是 Zabbix 系列中的一个主要版本&#xff0c;提供了增强的监控功能、改进的性能和扩展的可用性。Zabbix 是一个开源的企业级监控解决方案&#xff0c;用于监控服务器、虚拟机、网络设备、应用程序、服务等各类 IT 基础设施。Zabbix 7.0 继承了之前…

基于ZigBee的老人家庭监护报警设计

1 整体方案设计 本设计老人家庭监护报警系统的整体架构如图2.1所示&#xff0c;包括终端节点、协调器、上位机三个部分&#xff0c;其各个部分功能如下&#xff1a; 终端节点&#xff1a;以CC2530单片机为控制核心&#xff0c;结合心率传感器、DS18B20温度传感器、压力传感器…

大语言模型Token

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhlToken概述 Token的定义与分类 基本定义 Token是自然语言处理(NLP)和机器学习中的基本单元,它代表文本中的一个有意义的片段,如单词、短语或子词。在大型语言模型(LLM)中,Token是模型理解…

docker 介绍以及常用命令

文章目录 Docker 概述docker 概念安装 Docker核心概念Docker 镜像Docker 容器Docker 仓库 docker 与虚拟机比较 Docker 命令docker 进程相关命令镜像相关命令查看本地镜像搜索镜像拉取/推送镜像删除镜像 容器相关命令创建容器查看容器启动/终止/删除容器新建并启动容器进入容器…

day2 python学习积累

1.Python 关键字 - finally try:# 可能引发异常的代码 except 异常类型:# 异常处理代码 finally:# 无论是否发生异常都将执行的代码 try:file open("example.txt", "r")# 执行一些操作 except FileNotFoundError:print("文件不存在") finally…

你还在为去除图片背景烦恼吗?试试这两款免费神器吧!

今天想和大家聊聊在生活工作中特别实用的小工具&#xff0c;与“抠图”强相关的两款AI工具&#xff01; 说到这2个工具&#xff0c;真是忍不住要为大家强烈推荐一番&#xff01; 他们俩就是&#xff1a;PixianAI、Removerized 先说说背景去除这件事儿 无论你是设计师、摄影…

5年数据观巨变,这家公司如何在AI和大模型数据赛道遥遥领先?

过去5年&#xff0c;整个社会对于数据的观念和认知&#xff0c;发生了天翻地覆的改变。这要归功于OpenAI与预训练大语言模型&#xff08;以下简称大模型&#xff09;的问世以及横扫全球的ChatGPT。从2020年1月OpenAI发表《自然语言模型的“摩尔定律”&#xff08;Scaling Law f…

wmv怎么转换成视频mp4?简单的几种视频格式转换方法

wmv怎么转换成视频mp4&#xff1f;在数字媒体日益普及的今天&#xff0c;我们经常会遇到需要转换视频格式的情况。wmv格式&#xff0c;由微软开发&#xff0c;广泛用于Windows平台上播放视频。尽管wmv格式在Windows系统中表现优异&#xff0c;但其兼容性在其他操作系统或设备上…

关于VUE3开发频繁引入ref,reactive,computed等基础函数。

利用unplugin-auto-import插件可以避免频繁引入ref&#xff0c;reactive&#xff0c;computed等基础函数。 1.安装unplugin-auto-import依赖 npm i -D unplugin-auto-import 2.在vite.config.ts中注入依赖 效果

项目实战系列三: 家居购项目 第二部分

家居购项目 &#x1f407;servlet合并&#x1f34e;方案一: 隐藏域&#x1f34e;方案二: 反射模板设计模式动态代理 &#x1f333;显示家居&#x1f333;添加家居&#x1f349;解决重复添加&#x1f349;后端数据校验说明&#x1f349;BeanUtils自动封装Bean &#x1f333;删除…

什么是网络安全,如果做好安全

随着互联网技术的迅猛发展&#xff0c;我们的生活和工作日益依赖于网络。然而&#xff0c;这也使得网络安全问题愈发重要。网络安全不仅关乎个人隐私的保护&#xff0c;还直接影响到企业的运营安全乃至国家的信息安全。今天我们就来了解下关于网络安全&#xff0c;当前存在哪些…

初识 Embedding,为何大家都基于它搭建私人智能客服?

随着 AI 技术的发展&#xff0c;大家在日常使用过程中经常会碰到一些目前 GPT4 也无法解决的问题&#xff1a; 无法获取个人私有数据信息&#xff0c;进行智能问答无法获取最新信息&#xff0c;LLM 模型训练都是都是有截止日期的无法定制化私有的专属模型&#xff0c;从而在某…

网站开发:HTML+CSS - 表格与表单

1. 前言​​​​​​​​​​​​​​ 表格与表单在网页开发中非常重要。表格使得用户可以更简洁清晰的去浏览信息。 表单提供了一种在客户端&#xff08;浏览器&#xff09;和服务器之间进行数据交互的方式。 以下为其主要作用&#xff1a; 用户交互和数据输入&#xff1a;表…

【射频模块的基本组成以及工作原理-3D动画演示】How RF Module works?

一. 模块简介 RF是射频&#xff0c;是高频交流变化电磁波的简称。通常指的是振荡频率从30KHz到300GHz之间的电磁波。而射频模块就指的是工作在射频频率之间的模块。 二. 基本组成 RF模块指的是一组RF发射器和RF接收器。工作频率为433MHz。 1. RF transmitter RF发射器接受串…

苹果手机丢了怎么找回?3个追踪法,30秒迅速定位

苹果手机已经成为了我们生活中交流、出行、工作的重要工具&#xff0c;如果不小心把手机弄丢了&#xff0c;则会给我们的衣食住行都带来很大的不便之处。对此&#xff0c;如果苹果手机丢了怎么找回呢&#xff1f; 本文将介绍3种追踪丢失手机的方法&#xff0c;帮助你快速定位丢…

关于Embedding的两种实现方式

目录 言简意赅方式一方式二以DNN为例两种方式全部demo代码 言简意赅 假设现在有一段话&#xff1a;“我爱你中国”&#xff0c;在训练入模的时候&#xff0c;常用的方法分别有&#xff1a;onehot、embedding、hash&#xff0c;如果词表很大、特征很多&#xff0c;那么onehot之…

macos 使用port查询并安装python2, python3多版本, 设置默认python版本方法

不管是新版macos还是旧版本的macos都可以使用macport这个包管理工具简单方便的在mac上面安装并存多个版本的python, 还可以利用port select --set python python3 来设置默认的python版本等. port search查询可用python安装包 命令 port search --name --line --regex ^pytho…