Qt设置不规则窗体(Mask)

2023-11-14

  1. 创建新项目testMask,继承QWidget,添加Qt Resource file文件,添加图片资源
  2. 往ui界面中拖入一个label标签部件,标签文字内容设置为空白

widget.h

#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>

namespace Ui {class Widget;}

class Widget : public QWidget{
    Q_OBJECT
public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();
protected:
    void paintEvent(QPaintEvent *event) override;		//重写绘图事件
    void mousePressEvent(QMouseEvent *event) override;	//重写鼠标按下事件
private:
    Ui::Widget *ui;
};
#endif // WIDGET_H

widget.cpp

#include "widget.h"
#include "ui_widget.h"
#include <QPixmap>			//图片
#include <QBitmap>			//遮罩
#include <QPainter>			//画家
#include <QMouseEvent>		//鼠标事件

Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) {
    ui->setupUi(this);

    QPixmap pixmap(":/abc.png");                //加载图片
    ui->label->resize(pixmap.size());           //设置标签大小
    this->resize(pixmap.size());                //设置窗体大小

    setMask(pixmap.mask());                     //设置遮罩
}

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

void Widget::paintEvent(QPaintEvent *event){
    QPainter painter(this);
    painter.drawPixmap(0,0, QPixmap(":/abc.png"));
}

void Widget::mousePressEvent(QMouseEvent *event){
    //如果按下的是鼠标左键,就关闭窗口
    if(event->button() == Qt::LeftButton){
       close();
    }
}

最终效果
在这里插入图片描述
拖入两个按钮效果
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qt设置不规则窗体(Mask) 的相关文章

  • 如何重写(重新实现)QFileSystemModel 中的成员函数

    我已经为此苦苦挣扎了一段时间 Qt s QFileSystemModel由于图标获取算法非常糟糕 在获取数百个文件时速度非常慢 我想完全禁用图标 它们被提取到QFileSystemModel data方法不是虚拟的 QFileSystemM
  • 如何使用bind将成员函数作为函数指针传递?

    我试图将成员函数作为函数指针传递 这样我就不需要依赖单例或全局函数来处理 Qt 5 中的 Qt 消息 据我所知 我的 std function 是正确的类型 它具有正确的签名 并且绑定应该允许我插入隐式this指针 本质上是将成员函数传递为
  • QGraphicsSimpleTextItem“无效使用不完整类型”

    我的代码如下 指针部件 h QGraphicsSimpleTextItem text 指针控件 cpp void PointerWidget placeNumbers float spacing int currentTickNumber
  • 在另一个中使用 QAbstractListModel

    我在尝试使用 Qt QML 为我的应用程序开发数据模型时遇到问题 我已经用过一个QAbstractListModel能够将海关数据模型从 C 传递到 QML 并且它对于简单模型 例如基于字符串和布尔的模型 来说就像一个魅力 但现在我需要建立
  • PySide6.1 与 matplotlib 3.4 不兼容

    当我只安装PySide6时 GUI程序运行良好 但是一旦我安装了matplotlib及其依赖包 包括pyqt5 则GUI程序将无法运行并输出以下错误消息 This application failed to start because no
  • Qmake 不支持源目录下的构建目录

    我创建了一个可以在 OS X 上编译和运行的应用程序 我现在想开始让它在 Windows 上运行 首先 我将项目复制到 Windows 机器上并尝试编译 但收到此错误 警告 Qmake不支持源目录下的构建目录 有任何想法吗 将影子构建目录设
  • 如何在Qt中更快地读取数据?

    Qt读取数据库比C 慢吗 我想我错过了一些东西 为了比较阅读速度 我在 Qt 中编写了以下内容 QElapsedTimer t t start int count 0 QString cs Driver SQL Server Server
  • 在 Windows 上静默安装 Qt55 Enterprise

    编辑 在 Qt 支持的帮助下 我已经解决了如何自动化 Qt 企业安装程序的这两个部分 下面是脚本调用 我正在尝试在 Windows 8 1 和 Windows 10 上静默安装 Qt 5 5 1 Enterprise 使用 script 开
  • 使用 QTestLib 时抑制 qDebug

    我正在向 Qt 中的项目添加单元测试 并希望使用 QTestLib 我已经设置了测试并且它们运行良好 问题是在项目中我们重写了 qDebug 以输出到我们自己的日志文件 这在运行应用程序时效果很好 问题是当我测试类时 它有时会开始记录 然后
  • 在 Qt 中创建/写入新文件

    我正在尝试写入文件 如果该文件不存在 则创建它 我在互联网上搜索过 但没有任何效果 我的代码目前看起来像这样 QString filename Data txt QFile file filename if file open QIODev
  • QWebView等待加载

    bool MainWindow waitForLoad QWebView view QEventLoop loopLoad QTimer timer QObject connect view SIGNAL loadFinished bool
  • QGraphicsView 在完整布局中未最大化

    I have following GUI having four QGraphicView objects 正如您在每个视图下看到的那样 它有四个工具按钮 为了最大化视图 我连接了工具按钮的信号来隐藏其他三个视图的插槽 并将大小策略设置为扩
  • 更改显示的 DPI 缩放大小使 Qt 应用程序的字体大小渲染得更大

    我使用 Qt 创建了一些 GUI 应用程序 我的 GUI 应用程序包含按钮和单选按钮等控件 当我运行应用程序时 按钮内的按钮和字体看起来正常 当我将显示器的 DPI 缩放大小从 100 更改为 150 或 200 时 无论分辨率如何 控件的
  • 在未安装 Qt VS Tools 的情况下以 Qt/MsBuild 格式编译 Qt 项目

    我在 Visual Studio 中有很多 Qt 项目 使用新的 Qt MsBuild 格式 https blog qt io blog 2018 02 16 qt visual studio improving performance 由
  • 关于在 Qt 中使用未记录的类

    使用无证文件是否安全QObjectUserData类和QObject setUserData in Qt 相反 你可以看看使用QObject setProperty http doc qt io qt 5 qobject html setP
  • 使用 QSet 作为 Qt 地图容器中的键

    我需要一个映射 其中键是唯一的 并且每个键都是一组或自定义 POD 结构 其中包含 3 个数据项 这些值只是指向对象实例的指针 从阅读Qt 的 QMap 与 QHash 的文档 http qt project org doc qt 4 8
  • 如何通过 Qt 创建网络服务 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • QPainter 性能高帧率

    我试图在 QPainter 中以 60fps 的速度显示视频 在 OpenGLwidget 中 我遇到一个问题 有时绘图花费的时间太长 并且在使用 QPainter 时发生下一个重绘事件 这会生成警告和随机崩溃 有几个问题 是否有一种 Qt
  • 如何在qt中进行异步文件io?

    我想知道如何在qt中实现异步文件io 这在普通的 qt 中是否可以实现 或者有人需要使用另一个库 例如 libuv 来实现这样的事情 我正在查看 QDataStream 但即使它是一个 流 它也不是非阻塞的 我想一种解决方案是制作一个在内部
  • 获取 QPushButton 在 2D 数组 QPushButton 上的索引

    我有一个二维数组QPushButton 当用户单击按钮时如何获取按钮的索引 例如当用户单击按钮时a 2 3 它会显示 2 3 该示例如下所示 Qt 4 5 使用对象名称 您可以为按钮指定唯一的对象名称 理想情况下 名称应该是有效的 C 标识

随机推荐

  • Vue中如何实现ajax请求,VUE中如何发ajax请求

    vue中是推荐使用axios来发送请求的 而且在vue2 0之后也是使用axios来实现发送ajax请求的 1 安装 axios有好几种引用的方式 其中主要包括如下 使用 cdn 使用npm npm install axios 使用 bow
  • linux是一种开源的操作系统,又一个操作系统开源

    导读 9月18日 腾讯宣布开源自主研发的轻量级物联网实时操作系统 TencentOS tiny TencentOS tiny是腾讯面向物联网领域开发的实时操作系统 具有低功耗 低资源占用 模块化 安全可靠等特点 可有效提升物联网终端产品开发
  • 【牛客SQL】SQL7 查找薪水记录超过15次的员工号emp_no以及其对应的记录次数t

    题目描述 描述 有一个薪水表 salaries简况如下 请你查找薪水记录超过15次的员工号emp no以及其对应的记录次数t 以上例子输出如下 题解 本题考察分组GROUP BY和分组过滤HAVING操作 运行时间 17ms 超过52 75
  • Scala入门到精通——第一节 Scala语言初步

    本节主要内容 Scala简介 为什么要学习Scala Scala语言初步 1 Scala简介 Scala Scala Language的简称 语言是一种能够运行于JVM和 Net平台之上的通用编程语言 既可用于大规模应用程序开发 也可用于脚
  • 微信小程序应用”腾讯位置服务路线规划“插件

    1 申请路线规划插件 微信公众平台 微信小程序后台 设置 第三方设置 插件管理 里点击 添加插件 搜索 腾讯位置服务路线规划 选择添加插件即可 2 申请key 调用路线规划插件需要申请腾讯位置服务的服务账号 key是开发者的唯一标识 申请地
  • vue/webpack 引入 cdn 资源

    使用 vue 的 webpack 模版开发 spa 项目时 我们习惯使用 npm install 安装各种组件和依赖到本地 但引入的组件越来越多 打包时可能会导致 app js 过大的问题 对加载很不友好 准确的说 vue webpack
  • 嫖一嫖显示器的Over drive (OD) 功能

    1 背景 如下图 快速运动的画面会产生拖影现象 影响游戏体验 视觉观感 2 产生的原因 当响应时间大于刷新时间的时候 就会产生拖影 因为 上一帧还没有渲染完 又来了新的帧 3 首先明确上面两个时间的概念 3 1 Response time
  • es通过脚本来进行更新某个List字段

    Map
  • 软件测试最新“年薪50万”骗局来了,让我们来康康你们是如何上当受骗的

    小编热衷于收集整理资源 记录踩坑到爬坑的过程 希望能把自己所学 实际工作中使用的技术 学习方法 心得及踩过的一些坑 记录下来 也希望想做软件测试的你一样 通过我的分享可以少走一些弯路 可以形成一套自己的方法 并应用到实际中 小编整理了一些零
  • 【Java】基于哈希表的随机字符替换加密算法

    Java 基于哈希表的随机字符替换加密算法 一 简介 1 1 背景 1 2 目的 二 算法设计 2 1 HashTableCreator类 2 2 MessageEncryptor类 三 算法实现 3 1 HashTableCreator类
  • [UnityUI]UGUI自适应

    关键点 0 自适应的测试 通过设置多种的屏幕大小进行测试 测试时最好要打开Maximize on Play 在屏幕放大的情况下容易观察自适应情况 1 所谓的自适应 就是 a 保持相对位置不变 例如UI设计在屏幕的左上角 那么在各种的分辨率下
  • vue渲染数据时,v-html中的图片如何点击放大 以及 markdowm数据中的图片点击如何放大

    记录一下在部署博客的时候 文章中的内容点击图片不能放大的问题 效果展示 http zfc life sm 我先展示实现的代码 1 template 2 data 3 created 4 methods 上面的代码不是我写的 我只是在原有代码
  • C++实现通讯录管理系统(完整代码)课设或实验

    好久没写文章了 终于结束了满课的前三周以及烦人的考试 可以有多余的时间来自己学习 今天学习了利用C 实现通讯录管理系统 自己手敲了一遍 可以用来当实验题的答案或课设哦 具体的解释在代码注释当中 include
  • Qt中的d指针和q指针

    概述 如果程序从一个以前版本的库动态链接到新版本的库之后 能够继续正常运行 而不需要重新编译 那么我们就说这个库是二进制兼容的 如果一个程序需要重新编译来运行一个新版本的库 但是不需要对程序的源代码进一步的修改 这个库就是源代码兼容的 如果
  • 为什么做弱网测试?怎么做

    为什么要做弱网测试 弱网测试 属于健壮性测试的内容 为什么要做呢 尤其是现在的人们更习惯在地铁里 公交上 甚至是电梯 车库等等的场景里去关注一些新闻 看看小说 直播 玩游戏等等 在这个时候 我们就需要针对这些场景 去关注一下应用的运行状态
  • 尚硅谷-尚品汇项目开发总结(第三天)

    4 Home静态组件的拆分与postman测试接口是否可用 4 1 Home组件的拆分 注意点 HTML CSS 图片 4 2 postman测试接口 5 axios二次封装与配置代理服务器 nprogress进度条插件的使用 5 1 ax
  • 反转链表的四种方法

    目录 1 第一种方法 原地反转 2 第二种方法 利用头插法进行反转链表 3 第三种方法 利用迭代法进行反转链表 4 第四种方法 利用递归法进行反转链表 5 应用 当我们学习链表之后 就要学习一些链表的操作 而反转链表是我们必备技能 这里总结
  • SQL注入详解

    一 sql基础 1 sql注入原理 针对SQL注入的攻击行为可描述为通过用户可控参数中注入SQL语法 破坏原有SQL结构 达到编写程序意料之外结果的攻击行为 其成因可归结为以下两个原理叠加造成 1 程序编写者在处理程序和数据库交互时 使用字
  • stm32 OV7670/摄像头模块颜色区域定位(腐蚀中心算法)

    前两天用到的摄像头模块ov7670 想在摄像头做一个色块识别 查阅了部分资料和教程 发现有用的文章挺多 于是下载了几个demo 学习了一下 感谢一些博主的分享 今天整理一下分享给大家 实现原理 将摄像头的数据读出写入tft屏 读取tft屏幕
  • Qt设置不规则窗体(Mask)

    创建新项目testMask 继承QWidget 添加Qt Resource file文件 添加图片资源 往ui界面中拖入一个label标签部件 标签文字内容设置为空白 widget h ifndef WIDGET H define WIDG