首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

除了使用QIcon之外,如何将DecorationRole形状更改为圆形?

除了使用QIcon之外,可以通过自定义代理模型来将DecorationRole形状更改为圆形。

首先,创建一个自定义的QStyledItemDelegate类,并重写其paint()方法。在paint()方法中,可以获取到DecorationRole的内容,并进行自定义绘制。可以使用QPainter的drawEllipse()方法来绘制圆形,并设置好圆形的大小和位置。

下面是一个示例代码:

代码语言:txt
复制
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPainter, QPalette, QColor
from PyQt5.QtWidgets import QStyledItemDelegate, QApplication, QListView


class CircleDelegate(QStyledItemDelegate):
    def paint(self, painter, option, index):
        if index.data(Qt.DecorationRole):
            # 获取DecorationRole的内容
            icon = index.data(Qt.DecorationRole).pixmap(option.decorationSize)
            # 获取圆形的位置和大小
            circle_rect = option.rect
            circle_rect.setWidth(circle_rect.height())

            # 设置画笔
            painter.setPen(Qt.NoPen)
            # 设置画刷颜色为透明
            painter.setBrush(QColor(0, 0, 0, 0))
            # 绘制圆形
            painter.drawEllipse(circle_rect)

            # 在圆形内绘制图标
            icon_rect = circle_rect
            icon_rect.adjust(2, 2, -2, -2)  # 调整图标位置
            painter.drawPixmap(icon_rect, icon)

        # 绘制其他内容
        super().paint(painter, option, index)


if __name__ == "__main__":
    import sys

    app = QApplication(sys.argv)
    view = QListView()
    delegate = CircleDelegate(view)
    view.setItemDelegate(delegate)
    view.show()

    sys.exit(app.exec_())

在上面的代码中,我们创建了一个自定义的QStyledItemDelegate类,命名为CircleDelegate。在paint()方法中,我们首先判断是否有DecorationRole的内容,如果有,则获取图标并绘制一个圆形背景。然后,在圆形内绘制图标。最后,调用父类的paint()方法绘制其他内容。

使用上述代码,可以将DecorationRole的形状更改为圆形。您可以根据需要进行进一步的自定义绘制,例如添加阴影效果或其他样式。

这里没有提及腾讯云相关产品和产品介绍链接地址,因为与本问题无关。如果您有其他关于云计算或其他领域的问题,我会很乐意帮助您。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

PPT放大招之绘制一幅Nature插图

以Nature上的一幅插图为例,使用PPT进行绘制,最终需要达成的效果如下图。 ? 一、整体布局 1、将新建PPT设置合适长宽尺寸之后,背景色改为浅黄色; ?...然后将该形状复制一份,开放路径,把除了细胞膜外的顶点删除,去掉填充色,将获得的线条改为深棕色、6 pt粗细;将该线条复制一份,改为浅棕色、2 pt;将两个线条对齐叠加,形成双描边效果的细胞膜; 最后将细胞质去除线条...利用曲线工具绘制不同粗细的圆弧,改为白色,透明度为80%左右,作为圆形的高光部分。下面的高光部分基本采用此种条线的方式绘制。 ? 该步骤后,图形效果如下图所示。 ?...抗体的绘制(方法一)已经提过多次了,比较简单的布尔运算; 如果有英豪插件,则可使用方法二,提过编辑形状来获得圆角转折,通过线条扩展来获得轮廓; ?...至于LYTAC载体和聚糖多肽就简单了,只是简单的线条和圆形组合。 ?

2.2K20

Power BI 模拟知乎风格卡片图

内置卡片图模拟 ---- 首先拿内置卡片图试试,内置卡片图默认是矩形,在背景色设置区域,把它调成知乎色,RGB=234,244,254 如何将矩形变成圆形?...如果仍然不想放弃内置卡片图,只能叠图,在插入形状选项卡下可以看到有圆形造型。 把插入的圆形填充色设置为知乎蓝,同时去掉边框。 接着圆形和内置卡片图堆到一起,并置于底层,即可实现圆形卡片图效果。...按钮的形状设置为圆角矩形,这里大家可以看到,不同于卡片图,圆角的弧度可以更大,50%意味着矩形变为圆形。...为按钮增加文本,路径如下图所示: 文本不是固定值,而是将它度量值化,文本的度量值本例为: 指标文本 = FORMAT([指标],"0%") 最终效果如下图所示: 因按钮支持多种形状,所以除了圆形背景还可以是其它类型...如果你的卡片图需要显示在表格或者矩阵,以上两种方式就做不到了,需要使用SVG矢量图的方式实现,效果如下。实现过程可以参考前期的《Power BI原生矩阵气泡图》 ----

1.1K21
  • Qt For Python按钮控件使用实例

    设置按钮图标 除了设置文本,我们还能在按钮中设置一个图标,使用其setIcon()方法,对其传入一个QIcon()对象,代码如下所示: from PyQt5 import QtWidgets,QtGui...设置按钮的状态 除此之外,我们可以通过setEnabled()方法,设置按钮的状态,传入值为True时,表示按钮可用,传入值为False时,表示按钮禁用,代码如下所示: from PyQt5 import...设置按钮的大小 如同我们在主窗口中使用setFixedSize()方法设置主窗口的窗口大小,我们可以使用这个方法设置按钮的固定大小,代码如下所示: self.btn_3.setFixedSize(80,80...) # 设置按钮的固定大小 最后运行代码,我们可以发现,主窗口中的按钮3的形状已经变了,如下图所示: ?...最后 除了上面所介绍到的使用方法之外,QPushButton()还有很多高级的用法,这些在下面的文章中会逐步涉及。

    4.2K10

    粽子只有甜咸?NO!人家浑身上下都流淌着数学

    除了口味之外,粽子的形状也是五花八门,但显然大家对粽子的这个特点就没什么关注。今天悠爸就来和大家聊聊关于粽子形状那些事儿! ? 粽子的形状虽然很多,但还是以四角粽子最为常见,也就是三菱锥形的粽子。...与之PK的粽子形状还有竹筒形、长方形、圆锥形......但显然三菱锥形的粽子始终占据着粽子界TOP1的位置。为什么大家都愿意将粽子的形状做成三菱锥的形状呢?悠爸今天从数学的角度为大家剖析一番。 ?...在数学界,有一种和粽子长得相似的图形——莱洛三角形。你看这胖乎乎的样子,俨然就是粽子本粽。 ? ? 莱洛三角形是由三个圆形交叉画出来的。图形的画法简单,但却有着特殊的性质和非同一般的应用。 ?...莱洛三角形是除了圆形以外,最简单的等宽曲线,也就是说,莱洛三角形的所有直径都相等,无论方向如何,支撑它的两条平行线间距始终不变。 ?...作为三角形立体升级版本必然具有其独特性质,虽然具有圆的特性,但现实生活当然不能把这种物体真正意义上充当球形使用,毕竟这样的四面体重心是不太稳定的。 ?

    1K20

    深度好文!UI界面视觉平衡的终极指南

    如果感受不够明显的话,我们将两张图片的形状重叠。 ? 可以发现左边的正方形比圆形面积大,视觉权重也更大。而右边的圆形和正方形的面积是是相等的,它们的视觉效果也平衡。...因此我们可以通过补偿不同形状图标的面积来平衡视觉,允许较小的图标超出图标区域之外,并在较大的图标和图标区域之间留出一些空间。 ? 下面这组图标在视觉上是完全平衡的。 ?...圆形、菱形、三角形和其他非正方形的形状需要更高、更宽,才能在视觉上与方形的形状保持平衡。 图标区域应该预留一些空间用于视觉平衡,这对于图标组来说非常重要。...还有一些复杂的形状案例。 ? 如果我们要设计一张有折叠条纹和文字元素的海报,或者需要一条显眼的“打折”条纹,那么就要注意让它们在视觉上保持平衡,尖角可以突出形状外围一点,特别是长方形的情况。 ?...使用“平滑圆角”的好处主要是它们超级平滑的外观。但从另外一方面看,这些非标准的形状是难以应用到真实界面当中的。

    2.5K40

    Fdog系列(四):使用Qt框架模仿QQ实现登录界面,界面篇。

    自定义标题,隐藏任务栏标题,实现系统托盘显示 现在我们将系统自动的标题隐藏掉,使用我们自定义的标题,在这之前,我们先把最小化,关闭按钮实现,虽然可以直接切后台~~~ 同样使用到水平布局,将最小化,最大化按钮...除此之外任务栏也不显示程序标题,这正是我们想要的,现在我们为这个窗口添加系统托盘,和QQ一样,我们将在系统托盘对其操作。 QSystemTrayIcon类可以帮助我们完成这一操作。...m_si); //添加动态图 ui->mian_label->setMovie(m_movie); //mian_label是粉色的标签 //开始动画 m_movie->start(); 将头像设置为圆形需要设置...之后就是将文本框左右两边以及上面的边改为白色或透明,下边改成黑色,大功告成。...会到qt,拖一个widget,然后把除了顶层窗口所有我们自己创建的控件都拖进去,然后设置最小大小和最大大小,然后给顶层窗口一个布局。

    3.9K52

    详解视觉误差对UI设计的影响和解决方案

    我们改变一下圆形的尺寸,看看现在这两个图形的视觉尺寸有没有接近一些? ?...的正方形在视觉尺寸上接近,也就是我们常说的“一样大”。...对于这个现象的处理方法并没有那么简单,就拿上面那个例子来讲,有没有除了放大按钮以外的其他处理手法呢,当然是有的。...你的眼睛肯定能够察觉得出来右手边的那组按钮的圆角看起来更圆,自然,也悦目。 这个技法在 App 的 icon 的制作上也有大量的使用空间,在深入分析之前,我们来看看下面两个 icon。...除了那些 blingbling 的细节以外,除了这一种说法之外,还有说是由连个堆成的羊角曲线拼出来的。iOS 还有很多这些内涵深厚的细节,不得不感叹用户界面设计真是一门精深的学问。 ?

    1.3K10

    canvas 快速入门

    例如,将x坐标修改为200,y坐标修改为300。 这正是Canvas的美妙之处。操作你所绘制的对象是非常简单的,只需要修改一些参数值。...如果将使用fillRect的例子修改为使用strokeRect,那么你就会明白我所说的意思了。 image-20220608122748832 矩形现在加上了轮廓线,它实际上变成了中空的。...圆形是一个非常复杂的形状,因此Canvas实际上并没有专门绘制圆形的方法。但是有一个方法可以绘制圆弧,圆弧实际上是圆形的组成部分一首尾相连的圆弧就是圆形。...image-20220608142216599 除了font属性,还可以使用许多设置,如行高和备用字体系列。...image-20220608143820443 我们可以先绘制一个基本形状,然后再去掉一部分,从而快速方便地绘制出一些复杂的形状

    1.7K20

    基于OpenCV的图像形状检测(含源码)

    导读 本文给大家分享一个用OpenCV传统方法实现形状检测的小案例。...github.com/akshaybhatia10/ComputerVision-Projects/tree/master/FindShapes 其中典型的测试图片如下: 上图中包含了矩形、正方形、三角形、圆形和五角形共...5种形状,我们的目的是将其定位并标注对应的形状,效果如下: 实现步骤 【1】 图片转为灰度图,做二值化。...【4】 待优化部分: ① 判断矩形和正方形,原代码中使用外接矩形宽高插值做标准,可以改成宽高比值做判断标准; # 宽高插值小于3pixel if abs(width - height) <=3: 改为W...width * 1.0 / height) >= 0.95 and abs(width * 1.0 / height) <= 1.05: ② 区分星形(四角形/五角形)和正多边形(正八边形/正十边形)除了检测边数还可以加上凸包缺陷计算

    2.8K21

    python图像处理-个性化头像

    前言 很多时候我们都想要一个专属的头像表现,除了图像内容外不同,形状不一样,下面我就来说说如何使用python来实现个性化头像。...下面的圆形头像和牛角头像都是我使用python实现的,接下来我将通过讲解这个实现的过程,给大家带来一些想法。 ? ? ?...实现原理 我们可以看到原来图片是方正的,通过处理后,图像形状外的地方都变成白色,这里实际上是透明,上面第三幅图可以帮助我们理解。...下面蓝色圆形,可以看到透明度越高,自身的颜色就变淡了,底部的文字就看的清楚了,如果100%透明,圆形就会消失不存在了。 ?...这里的putalpha正常里面是放入一个0-255的数字的,表示要将这整张图片设置为透明度为多少,这是方式对于整张图片都更改透明度非常方便,但是对于更改局部或者特定形状部分的透明度就不行了;这里使用另外一种方式

    1.1K10

    Flutter & GLSL - 柒 | 减法与线

    仔细想一想,如果两个形状像素点重合,如果都是白色 1-1 = 0 就变成了黑色;如果都是黑色 0-0 = 0 保持黑色。 所以 circle 函数返回值的加减法在视觉上可以增加和减去图形。...圆形线的封装 上面我们通过两个圆相减实现了圆形线,现在来推演一下如何封装一个 圆形线方法 circle_line。...c2 = 1 - smoothstep(r, r + t, len); return c1 - c2; } 对于边线来说,当线宽较大不可忽略时,想要考虑线宽在图形外、中、内,上面的方法边线在圆形之外...循环遍历 glsl 中,可以使用 for 来执行循环逻辑,比如下面遍历生成很多条线圆形线,在循环体中可以根据次数 i 控制圆的半径、线宽、过渡阈值参数: 效果1 效果2 效果3 void main...本文通过 减法 认识了如何将两个形状进行裁剪,从而得到圆环和圆线。那本篇就到这里,后续还会带来更多 Flutter & GLSL 探索的文章,敬请期待 ~

    14510

    【QT】常用控件(一)

    一、控件是什么 ui设计界面左边的这些都叫控件,除了这些以外,QT还允许自定义控件,满足不同的需求 二、QWidget核心属性 1、enabled API 说明 isEnabled 获取到控件的可用状态...对象 setWindowIcon(const QIcon& icon) 设置控件的窗口图标 窗口和任务栏图标都会变成设置成的照片 但是我们一般不会通过文件的绝对路径引入照片,因为我们无法保证我D盘中的图片在你的...Add New,选择Qt resource file,起一个英文名字,这里叫resource file 点击Add Prefix,将前缀改为/ 然后点击Add Files,将要加入的图片放到...(const QCursor& cursor) 设置全局光标的形状,对整个程序中的所有widget都会生效,覆盖上面的setCursor设置的内容 我们可以直接通过属性栏来控制,也可以使用代码控制...,是以一个枚举体来存储的 我们来将光标改变为自定义图片 首先使用qrc将图片加载进去,步骤如同上文,不再赘述,然后定义一个位图对象加载并缩放图片,然后将图片设置为光标形状 #include "widget.h

    9910

    Fabric.js 拖拽顶点修改多边形形状

    theme: smartblue 我正在参加「掘金·启航计划」 本文简介 戴尬猴,我是德育处主任 这次要介绍的一个demo是"拖拽多边形定点修改多边形形状"。...使用 Fabric.js 官网给出的demo会更优雅,推荐在工作中使用。但如果你看了官网的demo还不太懂怎么创建自定义控件,可以看看 《Fabric.js 自定义控件》 这篇文章。...本文使用对学习阶段来说容易理解的方案去实现上述功能。...多边形的配置 我们创建出来的多边形是禁止用户直接操作的,想要修改多边形形状只能通过辅助的小圆来修改。...除此之外还需要将 hasControls 和 hasBorders 设置为 false ,这样做完圆形就不会显示控制角和控制边了,看上去会更像是多边形的控件。

    2K30

    C++设计模式——Bridge桥接模式

    桥接模式让抽象与实现之间解耦合,使得开发者可以关注于实现部分,调用者(Client)可以关注于抽象部分。...举个例子: 假设有一堆几何体,这些几何体有形状、颜色等特征,形状有:矩形、圆形,颜色有:红色、蓝色。...为了使用类来描述这些几何体,我们可以将他们抽象为四个子类:红色矩形,蓝色矩形,红色圆形,蓝色圆形。...按照以上方式,如果几何体还包含更多种类的形状和颜色,例如椭圆、绿色,那么这些特征通过排列组合产生的子类将会呈指数级增长。如果此时使用桥接模式,将会大大降低类与类之间的耦合,减少了开发期间的代码量。...对应UML类图: 桥接模式将继承关系改为组合关系,对于以上几何体的描述,我们使用一个类来描述几何体的矩形、圆形形状,我们使用另一个类来描述几何体的红色、蓝色等颜色,最后将这两个类的实例进行组合。

    10810

    学习 canvas 的 globalCompositeOperation 做出的神奇效果

    定义 globalCompositeOperation 属性设置或返回如何将一个源(新的)图像绘制到目标(已有)的图像上。 源图像 = 您打算放置到画布上的绘图。...这个属性用来设置要在绘制新形状时应用的合成操作的类型,比如在一个蓝色的矩形上画一个红色的圆形,是红色在上显示,还是蓝色在上显示,重叠的部分显示还是不显示,不重叠的部分又怎么显示,等一些情况,在面对这些情况的时候...用法 默认值: source-over 语法: context.globalCompositeOperation="source-in"; 表格中的蓝色矩形为目标图像,红色圆形为源图像。...源图像位于目标图像之外的部分是不可见的。 source-in 在目标图像中显示源图像。只有目标图像内的源图像部分会显示,目标图像是透明的。 source-out 在目标图像之外显示源图像。...不规则形状的图片 ? 代码 <!

    1.5K20

    OpenCV中BLOB特征提取与几何形状分类

    - SimpleBlobDetector类,使用它可以实现对二值图像几何形状的分离与分析。...当C等于1时候,该形状表示一个完美的圆形 当C趋近于0的时候,该形状表示接近于直线的多边形或者矩形。 当C值在0.75 ~ 0.85之间的时候,多数的时候表示与矩形或者等边的多边形出现。 ?...凸度 表示几何形状是凸包还是凹包的度量。说白了就是可以根据参数过滤凸多边形还是凹多边形, 输入的参数一般在0~1之间,最小为0,最大为1。一般圆形多会大于0.5以上 ?..., 0, 255), DrawMatchesFlags::DRAW_RICH_KEYPOINTS);imshow("keypoints", kp_image); 总结: 图像的BLOB特征提取与分析,除了使用...SimpleBlobDetector类之外还可以通过findContours与几何矩Moments计算相结合来实现。

    3.8K121

    UWP 手绘视频创作工具技术分享系列 - Ink & Surface Dial

    on screen 时,圆形菜单会出现在 Dial 的周围,而且会跟随 Dial 移动,操作相当直观,而 off screen 时,圆形菜单会以较小的形式出现。...首先是 Surface Pen,它除了可以完成鼠标的操作,如点击等之外;对于手绘视频应用更重要的是,笔记书画的功能。...除了系统提供的笔尖,我们也可以自己定义笔尖,这里简单提一下:笔尖有两个重要的属性需要定义,笔尖的形状和它的填充。...定义了这些属性后,在 InkCanvas 中书写时,笔尖结合方向,决定了不同方向笔画的形状和不同的粗细,笔尖的填充,决定了在反复涂画时,是否有颜色加深处理。 ?...因为 Dial 的旋转操作方式,很多子 Menu 都选择了圆形的方式。 ?

    1.1K120

    Unity基础教程系列(十)——卫星(Shape Relationships)

    这是可行的,因为不会在生成形状的同一帧中调用GameUpdate。 ? ? (轨道环绕) 那么椭圆轨道呢? 椭圆形轨道也是可以的,但比圆形轨道复杂。...通过为每个偏移量使用不同的半径,可以将轨道变成椭圆形。除此之外,轨道必须偏移,以使焦点形状最终到达椭圆的两个焦点之一。而且,轨道速度不再恒定,而是取决于卫星与其焦点之间的距离。...还要在所有形状行为中调整GameUpdate覆盖,始终在最后返回true。 ? 除了SatelliteShapeBehavior之外,仅当焦点形状有效时,该属性才应返回true。...除了为此使用单独的字段并增加ShapeInstance的大小外,还可以让实例标识符字段作为保存索引来执行双重职责。相应地重命名该字段。 ?...通过添加每个形状的卫星数量范围来对其进行配置。我们需要一个IntRange struct值,我们可以通过复制FloatRange并将使用的类型从float更改为int来创建它。 ?

    1.6K21
    领券