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

在QTableView的单个单元格中显示多个图标

在QTableView的单个单元格中显示多个图标,可以通过以下方法实现:

  1. 创建一个自定义的QWidget,并在其中添加多个QLabel,每个QLabel显示一个图标。
  2. 将自定义的QWidget设置为单元格的数据,并在表格中显示。

以下是一个示例代码:

代码语言:python
复制
from PyQt5.QtCore import Qt, QVariant
from PyQt5.QtGui import QIcon, QPixmap
from PyQt5.QtWidgets import QApplication, QTableView, QWidget, QVBoxLayout, QLabel, QStyledItemDelegate

class CustomWidget(QWidget):
    def __init__(self, icons):
        super().__init__()
        layout = QVBoxLayout()
        for icon in icons:
            label = QLabel()
            label.setPixmap(icon.pixmap(32, 32))
            layout.addWidget(label)
        self.setLayout(layout)

class CustomDelegate(QStyledItemDelegate):
    def __init__(self, parent=None):
        super().__init__(parent)

    def paint(self, painter, option, index):
        icons = index.data(Qt.UserRole + 1)
        if icons:
            custom_widget = CustomWidget(icons)
            custom_widget.setFixedSize(option.rect.size())
            painter.save()
            painter.translate(option.rect.topLeft())
            custom_widget.render(painter)
            painter.restore()
        else:
            super().paint(painter, option, index)

    def sizeHint(self, option, index):
        icons = index.data(Qt.UserRole + 1)
        if icons:
            custom_widget = CustomWidget(icons)
            return custom_widget.sizeHint()
        else:
            return super().sizeHint(option, index)

if __name__ == '__main__':
    app = QApplication([])

    table_view = QTableView()
    table_model = QStandardItemModel(table_view)
    table_view.setModel(table_model)

    # 添加一行数据
    icons = [QIcon('icon1.png'), QIcon('icon2.png'), QIcon('icon3.png')]
    item = QStandardItem()
    item.setData(QVariant(icons), Qt.UserRole + 1)
    table_model.appendRow(item)

    # 设置自定义的代理
    delegate = CustomDelegate()
    table_view.setItemDelegate(delegate)

    table_view.show()
    app.exec_()

在这个示例中,我们创建了一个自定义的QWidget,并在其中添加了多个QLabel,每个QLabel显示一个图标。然后,我们创建了一个自定义的QStyledItemDelegate,并在其中使用了自定义的QWidget来显示多个图标。最后,我们将自定义的代理设置为表格的代理,并在表格中显示了一个带有多个图标的单元格。

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

相关·内容

MFC子窗口任务栏显示图标和主窗口最小化系统托盘显示图标

MFC子窗口任务栏显示图标很简单, 只需要在子窗口初期化函数OnInitDialog()添加ModifyStyleEx(WS_EX_TOOLWINDOW, WS_EX_APPWINDOW); 主窗口系统托盘显示图标以及恢复窗口是参考某位大神代码...(一)  原理     1、最小化原理:首先要将窗口隐藏,然后右下角绘制图标。     ...2、恢复原理:将窗口显示,再将托盘图片删除。...       ShowWindow(SW_HIDE);    //隐藏主窗口     }     2、恢复界面函数,头文件定义消息响应函数     afx_msg LRESULT OnShowTask...(WPARAM wParam,LPARAM lParam) ;     //wParam接收图标的ID,而lParam接收是鼠标的行为     LRESULT CMyDlg::OnShowTask

3K80

问与答95:如何根据当前单元格值高亮显示相应单元格

excelperfect Q:这个问题很奇怪,需要根据工作表Sheet1输入数值高亮显示工作表Sheet2相应单元格。...具体如下: 一个工作簿中有两个工作表Sheet1和Sheet2,要求工作表Sheet1列A单元格输入一个值后,工作表Sheet2从列B开始相应单元格会基于这个值高亮显示相应单元格。...例如,工作表Sheet1单元格A2输入值2后,工作表Sheet2单元格B2开始两列单元格将高亮显示,即单元格B2和C2高亮显示工作表Sheet1单元格A3输入值3,工作表Sheet2...从B3开始三列单元格将高亮显示,即单元格B3、C3和D3加亮显示,等等。...图1:工作表Sheet1输入数值 ? 图2:工作表Sheet2结果 A:可以使用工作表模块事件来实现。

3.8K20

QTableView基本用法讲解,Qt表格控件使用方法

QTableView是Qt中用来把数据集以表格形式提供给用户一个控件,它与C++BuilderDBGrid作用类似。坦白说,DBGrid使用要比QTableView更容易一些。...但QTableView使用麻烦同时,也提供了更多灵活性。   ...:   检索处方项目成功后,把该项目显示QTableView里,把需要编辑数量字段提供给用户输入,用户输入确认后,该项目留在列表,然后开始下一项目检索录入。   ...实现过程如下:   录入项目保留在临时表tmp,界面上QTableView取名为tbList,与tbList关联Model取名为tb1。...tb1=newQSqlTableModel(this,*dbR); //dbR是本应用数据源 tb1->setTable("tmp"); //处方临时表 复制代码   程序需要显示时候,

13.6K20

Python Qt GUI设计:QTableView、QListView、QListWidet、QTableWidget、QTreeWidget和QTreeWidgetltem表格和树类(提升篇—1)

1、QTableView通常情况下,一个应用需要和一批数据(比如数组、列表)进行交互,然后以表格形式输出这些信息,这时就要用到QTableView类了。...QtableView可以使用自定义数据模型来显示内容,通过setModel来绑定数据源。...QTableWidget继承自QTableView,主要区别是QTableView可以使用自定义数据模型来显示内容(先要通过setModel来绑定数据源),而QTableWidget只能使用标准数据模型...使用QTableWidget时就需要QTableWidgetltem,用来表示表格一个单元格,整个表格就是用各单元格构建起来。...QTableWidget类常用方法如下表所示: 编辑规则枚举值类型如下表所示: 表格选择行为枚举值类型如下表所示: 单元格文本水平对齐方式如下表所示: 单元格文本垂直对齐方式如下表所示

3K20

Python Qt GUI设计:QTableView、QListView、QListWidet、QTableWidget、QTreeWidget和QTreeWidgetltem表格和树类(提升篇—1)

1、QTableView通常情况下,一个应用需要和一批数据(比如数组、列表)进行交互,然后以表格形式输出这些信息,这时就要用到QTableView类了。...QtableView可以使用自定义数据模型来显示内容,通过setModel来绑定数据源。...QTableWidget继承自QTableView,主要区别是QTableView可以使用自定义数据模型来显示内容(先要通过setModel来绑定数据源),而QTableWidget只能使用标准数据模型...使用QTableWidget时就需要QTableWidgetltem,用来表示表格一个单元格,整个表格就是用各单元格构建起来。...QTableWidget类常用方法如下表所示: 编辑规则枚举值类型如下表所示: 表格选择行为枚举值类型如下表所示: 单元格文本水平对齐方式如下表所示: 单元格文本垂直对齐方式如下表所示

3.7K30

python GUI库图形界面开发之PyQt5表格控件QTableView详细使用方法与实例

PyQt5表格控件QTableView简介 通常情况下,一个应用需要和一批数据进行交互,然后以表格形式输出这些信息,这时就需要用到QTableView类了,QTableView可以使用自定义数据模型来显示内容...,通过setModel来绑定数据源 QTableWidget继承自QTableView,主要区别是QTableView可以使用自定义数据模型来显示内容(先通setModel来绑定数据源),而QTableWidget...自能使用标准数据模型,并且其单元格数据是通过QTableWidgetItem对象实现,通常QTableWidget就能够满足我们要求 QTableView可用模式 QTableView控件可以绑定一个模型数据用来更新控件上内容...查询结果集进行封装 QSqlTableModel 对SQL表格进行封装 QSqlRelationalTableModel 对带有foreign keySQL表格进行封装 QSortFilterProxyModel...对模型数据进行排序或过滤 QTableView使用实例 import sys from PyQt5.QtCore import * from PyQt5.QtWidgets import *

5.1K22

PNAS | 理解单个神经元深度神经网络作用

最先进深度网络,研究者们已经观察到许多单个神经元与未教授给网络的人类可解释概念相匹配:已发现神经元可以检测物体、区域、性别、语境、感情等。...(C)通过将高激活区域与一组人类可理解视觉概念相匹配,为单个神经元评分;如图显示了几个标记概念检测器神经元以及五个神经元激活程度最高图像。...(F) 显示了该神经元飞机和非飞机图像网络样本上激活分布。 研究过程,为了量化概念c和神经元u之间关系,使用了IoU比率: ? 这个IoU比率是支持验证集图像集上进行计算。...估计单个神经元重要性一种方法是研究删除该神经元对整体平均网络精度影响。 为更细致地了解网络每个神经元逻辑作用,作者评估移除单个神经元时,神经网络对每个单独场景进行分类能力影响。...在上图2-2 A,当每个神经元从网络单独移除时,四个 conv5_3 神经元对滑雪胜地平衡分类精度造成损害最大;剖析显示,这些最重要神经元可以探测出滑雪场突出视觉概念。

75830

用Qt写软件系列三:一个简单系统工具之界面美化

而中间部分两个QTableView是重点。 ? ? QTableView美化       QTableView分成表头(Header)和表体(body)两部分。...QTableView上下文菜单,则需要重写contextMenuEvent()实现。上下文菜单项背景色仍然可以用QSS进行控制。另外,QTableView还有一个单元格对齐问题。...QTableView默认显示都是左对齐。这时,如果要想某一列都是居中对齐该怎么办那?答案是从QStandardItemModel类派生一个子类,重写虚函数data()。...为什么不是从QTableView继承呢?因为我们使用了QtMVC框架。View只管绘制Model数据,至于数据内容、格式设置什么,都在Model里面设置。...第二个参数是一个Role类型,用于区分不同数据类型。因为Qt里面的数据分很多种: ?       我们得指明,当数据是用来显示单元格时候,我们才设置对齐方式啊。不然的话就会乱套了。

5.1K70
领券