表格出现之前的QTableView占位文本
创始人
2024-12-10 00:01:09
0次

在QTableView中添加占位文本可以使用QStandardItemModel来实现。下面是一个代码示例:

from PyQt5.QtWidgets import QApplication, QTableView, QVBoxLayout, QWidget, QLabel, QHeaderView, QAbstractItemView, QStandardItemModel

class TableView(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("TableView Placeholder Text")
        self.layout = QVBoxLayout()
        self.table_view = QTableView()

        # 创建一个QStandardItemModel来存储表格数据
        self.model = QStandardItemModel(self)
        # 设置表格列数
        self.model.setColumnCount(3)
        # 设置表格行数
        self.model.setRowCount(5)
        # 设置表头
        self.model.setHorizontalHeaderLabels(["Column 1", "Column 2", "Column 3"])

        # 填充表格数据
        for row in range(self.model.rowCount()):
            for col in range(self.model.columnCount()):
                item = QStandardItem(f"Item {row+1}-{col+1}")
                self.model.setItem(row, col, item)

        # 设置表格的选择模式为单元格选择
        self.table_view.setSelectionMode(QAbstractItemView.SingleSelection)
        # 设置表格的编辑模式为只读
        self.table_view.setEditTriggers(QAbstractItemView.NoEditTriggers)
        # 设置表格的数据模型
        self.table_view.setModel(self.model)
        # 设置表头自适应列宽
        self.table_view.horizontalHeader().setSectionResizeMode(QHeaderView.ResizeToContents)

        # 在表格下方添加一个提示文本
        self.placeholder_label = QLabel("No data available.")
        self.placeholder_label.setAlignment(Qt.AlignCenter)

        # 隐藏表格和提示文本
        self.table_view.setVisible(False)
        self.placeholder_label.setVisible(True)

        self.layout.addWidget(self.table_view)
        self.layout.addWidget(self.placeholder_label)
        self.setLayout(self.layout)

        # 绑定数据模型的变化信号,用于切换表格和提示文本的显示
        self.model.dataChanged.connect(self.showTableView)
        self.model.rowsInserted.connect(self.showTableView)
        self.model.rowsRemoved.connect(self.showTableView)

    def showTableView(self):
        # 如果数据模型有数据,则显示表格,否则显示提示文本
        if self.model.rowCount() > 0:
            self.table_view.setVisible(True)
            self.placeholder_label.setVisible(False)
        else:
            self.table_view.setVisible(False)
            self.placeholder_label.setVisible(True)

if __name__ == "__main__":
    app = QApplication([])
    window = TableView()
    window.show()
    app.exec_()

在上述代码中,首先创建了一个QStandardItemModel来存储表格数据。然后,使用setHorizontalHeaderLabels方法设置表头,使用setColumnCount和setRowCount方法设置表格的列数和行数。接下来,使用setItem方法填充表格数据。在showTableView方法中,根据数据模型的变化,切换表格和提示文本的显示。最后,通过绑定数据模型的dataChanged、rowsInserted和rowsRemoved信号来实现自动切换显示。

相关内容

热门资讯

前端-session、jwt 目录:   (1)session (2&#x...
linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
nodejs:本地安装nvm实... 一、背景-使用不同版本node的原因 vue3+ts、nuxt3版本,node...
JAVA集合知识整理 Java集合知识整理 HashMap相关 HashMap的底层数据结构:jdk1.8之...
无刷直流电机介绍及单片机控制实... 无刷直流电机介绍及单片机控制实例前言基本概念优势与劣势使用寿命基本结构使用单片机控制实例电子调速器&...
fwdiary(2) dp2 1.传纸条  AcWing 275. 传纸条 - AcWing 走两条路,走一条最大的...
常用的DOS命令 常用的DOS命令 DOS(Disk Operating System,磁...
<C++> 类和对象(下) 1.const成员函数将const修饰的“成员函数”称之为const成员函数,cons...