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

Qt背景平铺

QT实现窗口平铺的方式有3种

1、drawTiledPixmap

利用该接口可以在给定的矩形内重复绘制图片 

void QPainter::drawTiledPixmap(const QRectF &rectangle, const QPixmap &pixmap, const QPointF &position = QPointF())

参数1:绘制的矩形范围

参数2:绘制的图片

参数3:在矩形中的哪个点开始绘制

重写绘图事件,如下:

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QPainter>class Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr): QWidget(parent){}~Widget()=default;protected://重写绘图事件void paintEvent(QPaintEvent* ev) override{QPainter p(this);p.drawTiledPixmap(this->rect(),QPixmap(":/sugar.png"));}};
#endif // WIDGET_H

2、利用画刷

画刷的类型可以指定为Qt::TexturePattern

画刷的构造函数接受一张图片,可以直接变为图片画刷

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QPainter>class Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr): QWidget(parent){}~Widget()=default;protected://重写绘图事件void paintEvent(QPaintEvent* ev) override{QPainter p(this);QPixmap pix(":/sugar.png");QBrush brush(pix);//指定图片画刷p.setBrush(brush);//图片会重复填充这个矩形p.drawRect(this->rect());}};
#endif // WIDGET_H

3、利用background-image

qss样式表,可以指定背景平铺

只需要指定background-image对应的图片就行了,就会自动平铺满

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QPainter>class Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr): QWidget(parent){this->setAttribute(Qt::WA_StyledBackground);this->setStyleSheet("background-image:url(:/sugar.png);");}~Widget()=default;};
#endif // WIDGET_H

http://www.xdnf.cn/news/14082.html

相关文章:

  • Java-45 深入浅出 Tomcat 核心架构与处理流程全解析Coyote IO模型与协议
  • java集合(十) ---- LinkedList 类
  • 基于CT图像的硬参数共享多任务分析:肝脏肿瘤分割与良恶性分类
  • ELK 日志分析系统
  • transformer demo
  • 深入剖析Redis Cluster集群,Redis持久化机制,Redis数据类型及其数据结构
  • DeepSeek与呼叫中心系统结合提升效率
  • ELK日志文件分析系统——1
  • 美化显示MSVC调试的数据结构
  • 当雷达学会“读心术” 汽车舱内安全迈入新纪元
  • C盘瘦身?
  • 如何将视频从 iPhone 传输到 HP 笔记本电脑
  • Untiy打包安卓踩坑
  • 单点登录(SSO)技术原理与实现指南
  • 【Docker基础】Docker核心概念:命名空间(Namespace)详解
  • C++11 Generalized(non-trivial) Unions:从入门到精通
  • LINUX613计划测put
  • Hadoop 003 — JAVA操作MapReduce入门案例
  • 传统数据仓库正在被 Agentic AI 吞噬?Agentic Data Stack 初探
  • 代码训练LeetCode(33)字符串首次匹配
  • 基于Cesium的Shadertoy纹理材质应用
  • 如何从 Windows 11 或 10 远程访问 Ubuntu 24.04 或 22.04 桌面
  • Java过滤器的基本概念
  • 微软Copilot两大创新功能详解:SharePoint Agents vs. Copilot Notebooks
  • Git更新master分支完整指南:从拉取到推送的全流程
  • 【搜狗输入法】如何使用自定义标点设置来输出直角引号
  • Keil无法下载程序到STM32 Error: Flash Download failed - Target DLL has been cancelled
  • 实现无缝连接:EtherNet/IP转CANopen网关助力汽车制造智能化未来
  • 串口输出版UART接收中断程序 (8259端口400H/402H)
  • 【51单片机】7. 串口通信、单片机向电脑发送数据电脑发送数据点亮LED灯Demo