PyQt5高级界面控件之QTableWidget(四)

QTableWidget

前言

QTableWidget是Qt程序中常用的显示数据表格的控件,类似于c#中的DataGrid。QTableWidget是QTableView的子类,它使用标准的数据模型,并且其单元数据是通过QTableWidgetItem对象来实现的,使用QTableWidget时就需要QTableWidgetItem。用来表示表格中的一个单元格,整个表格就是用各个单元格构建起来的

QTableWidget类中的常用方法

方法描述
setROwCount(int row)设置QTableWidget表格控件的行数
setColumnCount(int col)设置QTableWidget表格控件的列数
setHorizontalHeaderLabels()设置QTableWidget表格控件的水平标签
setVerticalHeaderLabels()设置QTableWidget表格控件的垂直标签
setItem(int ,int ,QTableWidgetItem)在QTableWidget表格控件的每个选项的单元控件内添加控件
horizontalHeader()获得QTableWidget表格控件的表格头,以便执行隐藏
rowCount()获得QTableWidget表格控件的行数
columnCount()获得QTableWidget表格控件的列数
setEditTriggers(EditTriggers triggers)设置表格是否可以编辑,设置表格的枚举值
setSelectionBehavior设置表格的选择行为
setTextAlignment()设置单元格内文本的对齐方式
setSpan(int row,int column,int rowSpanCount,int columnSpanCount)合并单元格,要改变单元格的第row行,column列,要合并rowSpancount行数和columnSpanCount列数
 row:要改变的行数
 column:要改变的列数
 rowSpanCount:需要合并的行数
 columnSpanCount:需要合并的列数
setShowGrid()在默认情况下表格的显示是有网格的,可以设置True或False用于是否显示,默认True
setColumnWidth(int column,int width)设置单元格行的宽度
setRowHeight(int row,int height)设置单元格列的高度

编辑规则的枚举值类型

选项描述
QAbstractItemView.NoEditTriggers0No0不能对表格内容进行修改
QAbstractItemView.CurrentChanged1Editing1任何时候都能对单元格进行修改
QAbstractItemView.DoubleClicked2Editing2双击单元格
QAbstractItemView.SelectedClicked4Editing4单击已经选中的内容
QAbstractItemView.EditKeyPressed8Editing8当修改键按下时修改单元格
QAbstractItemView.AnyKeyPressed16Editing16按任意键修改单元格
QAbstractItemView.AllEditTriggers31Editing31包括以上所有条件

表格选择行为的枚举值

选择描述
QAbstractItemView.SelectItems0Selecting0选中单个单元格
QAbstractItemView.SelectRows1Selecting1选中一行
QAbstractItemView.SelectColumns2Selecting2选中一列

单元格文本水平对齐方式

选项描述
Qt.AlignLeft将单元格内的内容沿单元格的左边缘对齐
Qt.AlignRight将单元格内的内容沿单元格的右边缘对齐
Qt.AlignHCenter在可用空间中,居中显示在水平方向上
Qt.AlignJustify将文本在可用空间内对齐,默认从左到右

单元格文本垂直对齐方式

选项描述
Qt.AlignTop与顶部对齐
Qt.AlignBottom与底部对齐
Qt.AlignVCenter在可用空间中,居中显示在垂直方向上
Qt.AlignBaseline与基线对齐

如果要设置水平和垂直方向对齐方式,比如在表格空间内上下,左右居中对齐,那么只要使用Qt,AlignHCenter和Qt,AlignVCenter即可

实例:QTableWidget的基本用法

import sys
from PyQt5.QtWidgets import *

class Table(QWidget):
    def __init__(self):
        super(Table, self).__init__()
        self.initUI()
    def initUI(self):
        self.setWindowTitle("QTableWidget例子")
        self.resize(400,300)
        layout=QHBoxLayout()

        #实现的效果是一样的,四行三列,所以要灵活运用函数,这里只是示范一下如何单独设置行列
        TableWidget=QTableWidget(4,3)

        # TableWidget = QTableWidget()
        # TableWidget.setRowCount(4)
        # TableWidget.setColumnCount(3)



        #设置水平方向的表头标签与垂直方向上的表头标签,注意必须在初始化行列之后进行,否则,没有效果
        TableWidget.setHorizontalHeaderLabels(['姓名','性别','体重(kg)'])
        #Todo 优化1 设置垂直方向的表头标签
        #TableWidget.setVerticalHeaderLabels(['行1', '行2', '行3', '行4'])

        #TODO 优化 2 设置水平方向表格为自适应的伸缩模式
        ##TableWidget.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)

        #TODO 优化3 将表格变为禁止编辑
        #TableWidget.setEditTriggers(QAbstractItemView.NoEditTriggers)

        #TODO 优化 4 设置表格整行选中
        #TableWidget.setSelectionBehavior(QAbstractItemView.SelectRows)

        #TODO 优化 5 将行与列的高度设置为所显示的内容的宽度高度匹配
        #QTableWidget.resizeColumnsToContents(TableWidget)
        #QTableWidget.resizeRowsToContents(TableWidget)

        #TODO 优化 6 表格头的显示与隐藏
        #TableWidget.verticalHeader().setVisible(False)
        #TableWidget.horizontalHeader().setVisible(False)

        #TOdo 优化7 在单元格内放置控件
        # comBox=QComboBox()
        # comBox.addItems(['男','女'])
        # comBox.addItem('未知')
        # comBox.setStyleSheet('QComboBox{margin:3px}')
        # TableWidget.setCellWidget(0,1,comBox)
        #
        # searchBtn=QPushButton('修改')
        # searchBtn.setDown(True)
        # searchBtn.setStyleSheet('QPushButton{margin:3px}')
        # TableWidget.setCellWidget(0,2,searchBtn)


        #添加数据
        newItem=QTableWidgetItem('张三')
        TableWidget.setItem(0,0,newItem)

        newItem=QTableWidgetItem('男')
        TableWidget.setItem(0,1,newItem)

        newItem=QTableWidgetItem('160')
        TableWidget.setItem(0,2,newItem)

        layout.addWidget(TableWidget)

        self.setLayout(layout)
if __name__ == '__main__':
    app=QApplication(sys.argv)
    win=Table()
    win.show()
    sys.exit(app.exec_())

初始运行程序,显示效果如下
这里写图片描述

代码分析

构造一个QTableWidget对象,设置表格为4行3列

TableWidget=QTableWidget(4,3)

设置表格头

TableWidget.setHorizontalHeaderLabels(['姓名','性别','体重(kg)'])

生成一个QTableWidgetItem对象,并添加到表格的0行0列处

 newItem=QTableWidgetItem('张三')
 TableWidget.setItem(0,0,newItem)

优化1:设置垂直方向表格头标签

TableWidget.setVerticalHeaderLabels(['行1', '行2', '行3', '行4'])

效果如下
这里写图片描述
优化2:设置表格头为伸缩模式
使用QTableWidget对象的horizontalHeader()函数,设置表格为自适应的伸缩模式,即可根据窗口的大小来改变网格的大小

TableWidget.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)

这里写图片描述
优化3:将表格设置为禁止编辑
在默认情况下,表格中的字符是可以更改的,比如双击一个单元格,就可以修改原来的内容,如果想禁止这种操作,让表格对用户只是只读,则可以编辑一下代码

TableWidget.setEditTriggers(QAbstractItemView.NoEditTriggers)

这里写图片描述
优化4:表格整行选中
表格默认选择的是单个单元格,通过以下代码可以设置整行选中

 TableWidget.setSelectionBehavior(QAbstractItemView.SelectRows)

这里写图片描述
优化5:将行与列的宽度高度与文本内容的宽高相匹配

QTableWidget.resizeColumnsToContents(TableWidget)
QTableWidget.resizeRowsToContents(TableWidget)

这里写图片描述
优化6:表格头的显示与隐藏

TableWidget.verticalHeader().setVisible(False)
TableWidget.horizontalHeader().setVisible(False)

这里写图片描述
优化7:在单元格内放置控件
QTableWidget不仅允许往单元格内放置文字,还允许放置控件,通过QTableWidget.setItem()来添加PyQt的基本控件
这里把一个下拉列表框和一个按钮加入单元格中,设置控件与单元格的边距,如为3px像素,代码如下

 comBox=QComboBox()
        comBox.addItems(['男','女'])
        comBox.addItem('未知')
        comBox.setStyleSheet('QComboBox{margin:3px}')
        TableWidget.setCellWidget(0,1,comBox)

        searchBtn=QPushButton('修改')
        searchBtn.setDown(True)
        searchBtn.setStyleSheet('QPushButton{margin:3px}')
        TableWidget.setCellWidget(0,2,searchBtn)

这里写图片描述

实例二:在表格中快速定位到指定行

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *

class Table(QWidget):
    def __init__(self):
        super(Table, self).__init__()
        self.initUI()
    def initUI(self):
        #设置标题与初始大小
        self.setWindowTitle('QTableWidget例子')
        self.resize(600,800)

        ##水平布局
        layout=QHBoxLayout()
        #实例化表格视图(30*4)
        tablewidget=QTableWidget(30,4)
        layout.addWidget(tablewidget)

        for i in range(30):
            for j in range(4):
                itemContent='(%d,%d)'%(i,j)
                #为每个表格内添加数据
                tablewidget.setItem(i,j,QTableWidgetItem(itemContent))

        self.setLayout(layout)

        #遍历表格查找对应项
        text='(10,1)'
        items=tablewidget.findItems(text,Qt.MatchExactly)
        item=items[0]
        #选中单元格
        item.setSelected(True)
        #设置单元格的背脊颜色为红
        item.setForeground(QBrush(QColor(255,0,0)))

        row=item.row()
        #通过鼠标滚轮定位,快速定位到第十一行
        tablewidget.verticalScrollBar().setSliderPosition(row)
if __name__ == '__main__':
    app=QApplication(sys.argv)
    table=Table()
    table.show()
    sys.exit(app.exec_())

效果如图
这里写图片描述

实例三:QTableWidget的高级用法


import sys
from PyQt5.QtWidgets import (QWidget, QTableWidget, QHBoxLayout, QApplication, QTableWidgetItem)
from PyQt5.QtGui import QBrush, QColor, QFont
from PyQt5.QtCore import Qt


class Table(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        #设置标题与初始大小
        self.setWindowTitle("QTableWidget 例子")
        self.resize(430, 230)

        #水平布局,初始表格为(4*3),添加到布局中
        conLayout = QHBoxLayout()
        tableWidget = QTableWidget(5,3)
        conLayout.addWidget(tableWidget)

        #设置水平头标签
        tableWidget.setHorizontalHeaderLabels(['姓名', '性别', '体重(kg)'])

        #创建新条目,设置背景颜色,添加到表格指定行列中
        newItem = QTableWidgetItem("张三")
        #newItem.setForeground(QBrush(QColor(255, 0, 0)))
        tableWidget.setItem(0, 0, newItem)

        # 创建新条目,设置背景颜色,添加到表格指定行列中
        newItem = QTableWidgetItem("男")
        #newItem.setForeground(QBrush(QColor(255, 0, 0)))
        tableWidget.setItem(0, 1, newItem)

        # 创建新条目,设置背景颜色,添加到表格指定行列中
        newItem = QTableWidgetItem("160")
        #newItem.setForeground(QBrush(QColor(255, 0, 0)))
        tableWidget.setItem(0, 2, newItem)

        # newItem = QTableWidgetItem("李四")
        # #将字体加粗,黑色字体
        # newItem.setFont(QFont('Times',12,QFont.Black))
        # tableWidget.setItem(1, 0, newItem)
        #
        # # 创建新条目,设置背景颜色,添加到表格指定行列中
        # newItem = QTableWidgetItem("男")
        # newItem.setFont(QFont('Times', 12, QFont.Black))
        # tableWidget.setItem(1, 1, newItem)
        #
        # # 创建新条目,设置背景颜色,添加到表格指定行列中
        # newItem = QTableWidgetItem("150")
        # newItem.setFont(QFont('Times', 12, QFont.Black))
        # tableWidget.setItem(1, 2, newItem)
        #
        # newItem = QTableWidgetItem("王五")
        # #将字体加粗,黑色字体
        # newItem.setFont(QFont('Times',12,QFont.Black))
        # tableWidget.setItem(2, 0, newItem)
        #
        # # 创建新条目,设置背景颜色,添加到表格指定行列中
        # newItem = QTableWidgetItem("女")
        # newItem.setFont(QFont('Times', 12, QFont.Black))
        # tableWidget.setItem(2, 1, newItem)
        #
        # # 创建新条目,设置背景颜色,添加到表格指定行列中
        # newItem = QTableWidgetItem("175")
        # newItem.setFont(QFont('Times', 12, QFont.Black))

        # 设置单元格文本的对齐方式
        #newItem.setTextAlignment(Qt.AlignRight|Qt.AlignBottom)
        #tableWidget.setItem(2, 2, newItem)


        #按照体重排序
        #Qt.DescendingOrder降序
        #Qt.AscEndingOrder升序
        #tableWidget.sortItems(2,Qt.DescendingOrder)

        #合并单元格
        #tableWidget.setSpan(2,0,4,1)

        #设置单元格的大小
        #将第一列的单元宽度设置为150
        #tableWidget.setColumnWidth(0,150)
        #将第一行的单元格高度的设置为120
        #tableWidget.setRowHeight(0,120)


        #表格中不显示分割线
        #tableWidget.setShowGrid(False)

        #隐藏垂直头标签
        #tableWidget.verticalHeader().setVisible(False)




        self.setLayout(conLayout)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    example = Table()
    example.show()
    sys.exit(app.exec_())

初始运行,效果如下
这里写图片描述
优化1:设置单元格的文本颜色,将第一行中的三个文本颜色设置为红色

newItem.setForeground(QBrush(QColor(255, 0, 0)))

这里写图片描述
优化2:将字体加粗

#设置字体类型,大小号,颜色
newItem.setFont(QFont('Times',12,QFont.Black))
  • 这里写图片描述
    优化3:设置单元格的排序方式
from PyQt5.QtCore import Qt
#按照体重排序
#Qt.DescendingOrder降序
#Qt.AscEndingOrder升序
tableWidget.sortItems(2,Qt.DescendingOrder)

这里写图片描述
优化4:单元格的文本对齐方式
这里更改了王五体重的文本对齐方式为右下角处

 # 设置单元格文本的对齐方式(右下)
        newItem.setTextAlignment(Qt.AlignRight|Qt.AlignBottom)
        tableWidget.setItem(2, 2, newItem)

这里写图片描述
优化5:合并单元格
将表格中第一行第一列的单元格,更改为占据5行1列

#合并单元格
tableWidget.setSpan(2,0,5,1)
  • 这里写图片描述
    优化6:设置单元格的大小
    这里将第一行宽度设置为150,高度设置为120
#将第一列的单元宽度设置为150
tableWidget.setColumnWidth(0,150)
#将第一行的单元格高度的设置为120
tableWidget.setRowHeight(0,120)

这里写图片描述
优化7:在表格中不显示分割线
QTableWidget类的setShowGrid()函数是从QTableView类继承的,用来设置是否显示表格的分割线,默认显示分割线

 #表格中不显示分割线
tableWidget.setShowGrid(False)

这里写图片描述
优化8:为单元格添加图片
还可以在单元格内添加图片并显示图片描述信息,代码如下
这里图片放置在王五体重的单元格内

#添加图片
newItem = QTableWidgetItem(QIcon("./images/bao1.png"), "背包")
tableWidget.setItem(2, 2, newItem)

这里写图片描述

实例四:单元格内图片的显示


import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore  import *

class Table(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        #设置标题与初始大小
        self.setWindowTitle("QTableWidget 例子")
        self.resize(1000 ,900);
        #设置布局,初始表格5*3
        conLayout = QHBoxLayout()
        table= QTableWidget(5,3)

        #设置表格水平头标签
        table.setHorizontalHeaderLabels(['图片1' ,'图片2' ,'图片3'])
        #设置不可编辑模式
        table.setEditTriggers( QAbstractItemView.NoEditTriggers)
        #设置图片的大小
        table.setIconSize(QSize(300 ,200))

        #设置所有行列宽高数值与图片大小相同
        for i in range(3):   # 让列宽和图片相同
            table.setColumnWidth(i , 300)
        for i in range(5):   # 让行高和图片相同
            table.setRowHeight(i , 200)

        for k in range(15):
            i = k/ 3
            j = k % 3

            #实例化表格窗口条目
            item = QTableWidgetItem()
            #用户点击表格时,图片被选中
            item.setFlags(Qt.ItemIsEnabled)
            #图片路径设置与图片加载
            icon = QIcon(r'.\images\bao%d.png' % k)
            item.setIcon(QIcon(icon))
            #输出当前进行的条目序号
            print('e/icons/%d.png i=%d  j=%d' % (k, i, j))
            #将条目加载到相应行列中
            table.setItem(i, j, item)


        conLayout.addWidget(table)
        self.setLayout(conLayout)



if __name__ == '__main__':
    app = QApplication(sys.argv)
    example = Table()
    example.show()
    sys.exit(app.exec_())

效果如下
这里写图片描述

实例五:支持右键菜单

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *


class Table(QWidget):
    def __init__(self):
        super(Table, self).__init__()
        self.initUI()

    def initUI(self):
        # 设置标题与初始大小
        self.setWindowTitle('QTableWidget demo')
        self.resize(500, 300)

        # 水平布局,初始表格5*3,添加到布局
        layout = QHBoxLayout()
        self.tableWidget = QTableWidget(5, 3)
        layout.addWidget(self.tableWidget)

        # 设置表格水平方向的头标签
        self.tableWidget.setHorizontalHeaderLabels([ '姓名', '性别', '体重' ])

        # 设置水平方向自动伸缩填满窗口
        self.tableWidget.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)

        # 添加数据到指定行列
        newItem = QTableWidgetItem("张三")
        self.tableWidget.setItem(0, 0, newItem)

        newItem = QTableWidgetItem("男")
        self.tableWidget.setItem(0, 1, newItem)

        newItem = QTableWidgetItem("160")
        self.tableWidget.setItem(0, 2, newItem)

        newItem = QTableWidgetItem("李四")
        self.tableWidget.setItem(1, 0, newItem)

        newItem = QTableWidgetItem("女")
        self.tableWidget.setItem(1, 1, newItem)

        newItem = QTableWidgetItem("120")
        self.tableWidget.setItem(1, 2, newItem)

        # 允许右键产生菜单
        self.tableWidget.setContextMenuPolicy(Qt.CustomContextMenu)
        # 将右键菜单绑定到槽函数generateMenu
        self.tableWidget.customContextMenuRequested.connect(self.generateMenu)

        self.setLayout(layout)

    def generateMenu(self, pos):
        # 计算有多少条数据,默认-1,
        row_num = -1
        for i in self.tableWidget.selectionModel().selection().indexes():
            row_num = i.row()

        # 表格中只有两条有效数据,所以只在前两行支持右键弹出菜单
        if row_num < 2:
            menu = QMenu()
            item1 = menu.addAction(u'选项一')
            item2 = menu.addAction(u'选项二')
            item3 = menu.addAction(u'选项三')
            action = menu.exec_(self.tableWidget.mapToGlobal(pos))
            # 显示选中行的数据文本
            if action == item1:
                print('你选了选项一,当前行文字内容是:', self.tableWidget.item(row_num, 0).text(),
                      self.tableWidget.item(row_num, 1).text(),
                      self.tableWidget.item(row_num, 2).text())
            if action == item2:
                print('你选了选项二,当前行文字内容是:', self.tableWidget.item(row_num, 0).text(),
                      self.tableWidget.item(row_num, 1).text(),
                      self.tableWidget.item(row_num, 2).text())
            if action == item3:
                print('你选了选项三,当前行文字内容是:', self.tableWidget.item(row_num, 0).text(),
                      self.tableWidget.item(row_num, 1).text(),
                      self.tableWidget.item(row_num, 2).text())


if __name__ == '__main__':
    app = QApplication(sys.argv)
    example = Table()
    example.show()
    sys.exit(app.exec_())

这里写图片描述

 

 

相关文件及下载地址

https://download.csdn.net/download/jia666666/10609488

--------------------- 本文来自 jia666666 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/jia666666/article/details/81627589?utm_source=copy

  • 3
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 可以使用QHeaderView来实现QTableWidget的表头筛选功能。具体步骤如下: 1. 创建QHeaderView对象,并将其设置为QTableWidget的水平表头。 2. 为QHeaderView的每个表头项设置一个过滤器,用于筛选该列的数据。 3. 在过滤器中,使用QSortFilterProxyModel来过滤数据,并将其设置为QTableWidget的模型。 4. 在过滤器中,根据用户输入的筛选条件,使用QRegExp来匹配数据。 5. 在过滤器中,根据匹配结果,使用QModelIndexList来获取需要显示的行,并将其设置为QSortFilterProxyModel的过滤结果。 6. 在过滤器中,使用QHeaderView的setFilterBoxesVisible方法来显示过滤器输入框。 7. 在过滤器中,使用QHeaderView的setFilterBoxStyle方法来设置过滤器输入框的样式。 8. 在过滤器中,使用QHeaderView的setFilterBoxToolTip方法来设置过滤器输入框的提示信息。 9. 在过滤器中,使用QHeaderView的filterBoxTextChanged信号来响应用户输入的筛选条件,并更新QSortFilterProxyModel的过滤结果。 10. 在过滤器中,使用QHeaderView的filterBoxClearButtonClicked信号来响应用户清空筛选条件的操作,并更新QSortFilterProxyModel的过滤结果。 以上就是使用QHeaderView来实现QTableWidget的表头筛选功能的步骤。 ### 回答2: QTableWidgetPyQt5中用于创建表格视图的类之一,它可以通过设置行列、单元格数及其内容等属性来实现对表格视图的管理。在实际开发中,为了方便对大量数据进行分类检索,我们经常会涉及到表头筛选(也称为列头过滤),即在QTableWidget的表头视图中添加一个下拉框或弹出窗口,用于选择需要显示的列。 QTableWidget表头筛选的基本实现方式是通过QComboBox来自定义表头菜单,并通过connect()方法和activated()信号实现菜单选中事件的响应,进而调用hideColumn()和showColumn()方法控制列的显示与隐藏。下面是一个简单的流程示意图: 1.创建QTableWidget对象; 2.设置表格的行数和列数; 3.通过setHorizontalHeaderLabels()方法设置表头标签; 4.通过setCellContent()方法设置表格单元的内容; 5.创建QComboBox对象,设置下拉框中的菜单项; 6.将QComboBox对象添加到表头视图中; 7.通过activated()信号设置菜单选中事件的响应函数; 8.在响应函数中调用hideColumn()和showColumn()方法实现列的隐藏和显示。 在实现表头筛选时,还需要注意以下几点: 1.筛选菜单对应列只需要在第一次打开筛选菜单时添加,后续打开不需要再重新添加; 2.在菜单选中事件的响应函数内,要先清空原有的筛选条件再应用新的筛选条件; 3.如果表格的数据是动态改变的,需要在数据更新时重新生成筛选菜单。 对于表头筛选的高级功能,可以考虑使用QHeaderView和QAbstractProxyModel等组件和类来实现。通过对这些类和组件的深入学习和实践,将可以更加精准、高效地实现表头筛选和数据处理等任务。 ### 回答3: PyQt5是一个Python编程语言的图形用户界面(GUI)开发框架,能够完美地与Qt5进行交互。其中,QTableWidget是用于显示二维表格数据的Qt5控件,能够方便地进行数据的编辑、排序和筛选。 PyQt5中,我们可以通过设置QTableWidget表头的点击事件来实现表头筛选。具体可以采用以下的方式: 1. 首先,将表头的点击信号连接到自定义的处理函数上,在这个处理函数中负责调用QTableWidget的排序函数和刷新UI界面。 ``` self.tableWidget.horizontalHeader().sectionClicked.connect(self.sortTable) def sortTable(self, index): self.tableWidget.sortByColumn(index) self.tableWidget.update() ``` 2. 然后,我们可以通过前缀匹配的方式来实现基于表头的筛选功能。即在表格中输入一个字符串,然后只显示前缀匹配的行。 ``` # 在筛选框内输入字符串 filter_text = self.lineEdit.text().lower() # 遍历每一行,只显示前缀匹配的行 for row in range(self.tableWidget.rowCount()): if filter_text in str(self.tableWidget.item(row, 0).text().lower()): # 这里以第一列为例 self.tableWidget.setRowHidden(row, False) else: self.tableWidget.setRowHidden(row, True) ``` 通过以上方式,我们就可以实现基于表头的筛选功能了。需要注意的是,由于QTableWidget的数据实际上是存放在QTableWidgetItem中的,所以在筛选时需要先将数据转换为字符串进行操作。另外,这里只是简单的实现了基于前缀匹配的筛选,实际上可以根据需要进行各种自定义筛选操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值