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

查找包含值的单元格的索引并突出显示QTableView中的所有单元格

在QTableView中查找包含特定值的单元格的索引并突出显示,可以通过以下步骤实现:

  1. 获取QTableView的模型对象:使用QTableView的model()方法获取模型对象。
  2. 遍历模型数据:使用模型对象的rowCount()和columnCount()方法获取行数和列数,然后使用for循环遍历所有单元格。
  3. 获取单元格数据:使用模型对象的data()方法获取每个单元格的数据。
  4. 检查单元格数据:判断获取到的单元格数据是否包含目标值。
  5. 突出显示单元格:如果单元格数据包含目标值,可以使用QTableView的setStyleSheet()方法设置该单元格的样式,例如设置背景色为黄色。

以下是一个示例代码,演示如何在QTableView中查找包含特定值的单元格的索引并突出显示:

代码语言:txt
复制
from PyQt5.QtWidgets import QApplication, QMainWindow, QTableView, QVBoxLayout, QWidget
from PyQt5.QtGui import QStandardItemModel, QStandardItem
from PyQt5.QtCore import Qt

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        # 创建QTableView和模型对象
        self.table_view = QTableView()
        self.model = QStandardItemModel()

        # 设置模型对象
        self.table_view.setModel(self.model)

        # 添加数据到模型对象
        self.model.setItem(0, 0, QStandardItem("Apple"))
        self.model.setItem(0, 1, QStandardItem("Banana"))
        self.model.setItem(1, 0, QStandardItem("Orange"))
        self.model.setItem(1, 1, QStandardItem("Apple Banana"))

        # 设置窗口布局
        layout = QVBoxLayout()
        layout.addWidget(self.table_view)
        central_widget = QWidget()
        central_widget.setLayout(layout)
        self.setCentralWidget(central_widget)

        # 查找并突出显示包含特定值的单元格
        self.highlight_cells("Apple")

    def highlight_cells(self, target_value):
        for row in range(self.model.rowCount()):
            for column in range(self.model.columnCount()):
                index = self.model.index(row, column)
                cell_data = self.model.data(index, Qt.DisplayRole)
                if target_value in cell_data:
                    self.table_view.setStyleSheet(f"QTableView::item {{ background-color: yellow; }}")
                    break

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

在上述示例代码中,我们创建了一个QTableView和一个QStandardItemModel,并向模型对象添加了一些数据。然后,我们通过highlight_cells()方法查找包含特定值的单元格,并使用setStyleSheet()方法设置这些单元格的背景色为黄色。

请注意,这只是一个简单的示例,实际应用中可能需要根据具体需求进行修改和扩展。

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

相关·内容

问与答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

如何高亮显示包含有数字单元格

小勤:Excel里面怎么高亮显示包含有数字单元格? 大海:条件格式? 小勤:但怎么判断一个单元格里面是否包含数字呢?...大海:在Excel里判断一个文本是否包含数字稍为麻烦一点儿,可以用find函数查找方式来实现,比如下面的公式计算了一个文本里数字出现位置总和: 小勤:那就是说,判断一下这个和是不是大于零就知道有没有包含数字啦...大海:对。可是,要写条件格式公式来高亮显示还是比较麻烦。 小勤:啊?不是把这个公式直接套进去就好了吗? 大海:不行。因为条件格式里公式不支持数组常量,你看: 小勤:那怎么办?...对于数据是否包含某一组字符这种判断还是在Power Query里方便啊,可以构造列表放到Text.PositionOfAny里进行判断。这里还好是判断数字,要是其他复杂字符可能就麻烦了。...对于大多数时候,数据本身处理计算是日常工作重点,那么实现数据处理过程自动化,可以避免大量重复劳动,那应该尽可能用Power系列功能; 如果是日常零散、临时工作,又或者是要在原始数据上做一些特殊格式设置之类

79320

Excel公式技巧82:查找指定所在单元格

通常,我们会根据指定位置查找,例如使用VLOOKUP函数查找指定行列单元格。然而,如果我们知道了某个,需要查找这个所在单元格,这如何使用公式呢?...例如,下图1所示工作表,其中数值最大单元格是G5。我们可以使用:=Max(B2:M7)获取该区域中最大数值,但怎样知道这个数在单元格G5呢? ?...图1 我们可以使用SUMPRODUCT函数与ROW函数和COLUMN函数配合,分别获取该数所在行和列,然后使用ADDRESS函数来获取单元格地址。...按照这样思路,我们可以分别获取该区域最大所在行列标题。...综上,表明该最大数值对应商品D在六月份数量。 小结:本示例技巧关键在于理解公式SUMPRODUCT函数部分技巧。

8.2K30

Excel实战技巧:基于单元格显示相应图片

标签:Excel实战,INDEX函数,MATCH函数,定义名称,VBA 选择零件号,显示相应零件图;选择员工姓名,显示该员工相片,等等,都是选择单元格显示相应图片例子,也就是说基于单元格查找显示对应图片...在新建名称对话框,输入名称:PictureLookup 在引用位置,输入: =INDEX(B2:B11,MATCH(D2,A2:A11,0)) 其中,单元格区域B2:B11包含国旗,单元格D2包含查找国家名称...选择包含国旗任一单元格,按Ctrl+C或者单击功能区“复制”按钮复制该单元格,再选择一个不同单元格(示例单元格E2),单击功能区“开始”选项卡“粘贴——链接图片”,将显示被粘贴图片,...这样,在单元格D2选择国家名称,在单元格E2显示该国家国旗图片。 当然,如果使用Microsoft 365,那么还可以使用新XLOOKUP函数来编写查找公式。...图4 可以看到,在单元格B2公式为: =IF(VLOOKUP(A2,D2,1,0)=A2,1,NA()) 如果单元格D2与列A相应相同,则公式返回1,否则返回#N/A。

8.7K30

Excel公式练习32: 将包含单元格多行多列单元格区域转换成单独去掉空单元格

本次练习是:如下图1所示,单元格区域A1:D6是一系列数据,其中包含单元格,现在要将它们放置到一列删除空单元格,如图中所示单元格区域G1:G13,如何使用公式实现? ?...*"})) 统计单元格区域A1:D6非空单元格数量。并将该单元格作为辅助单元格。...因此,如果结果大于单元格F1,则公式结果为空,否则执行IF语句第2部分。...这个结果传递给INDIRECT函数: INDIRECT(“R1C00004”,0) 结果将取出第1行第4列,即单元格D4。 为什么选用10^5,并且使用R0C00000作为格式字符串呢?...这个公式缺点是,当下拉很多行时,如果有许多行都为空,则仍会进行很多计算,占有资源,不会像前面给出公式,第一个IF判断为大于非空单元格后,直接输入空。有兴趣朋友可以仔细研究。

2.3K10

VBA程序:对加粗单元格求和

标签:VBA 下面的VBA自定义函数演示了如何对应用了粗体格式单元格求和。...ErrHandler: '检查是否溢出 If Err.Number = 6 Then SumBold = CVErr(xlErrNum) Resume Continue End Function 注意,当求和单元格区域中单元格格式发生更改时...,不会触发任何事件;而使用Application.Volatile语句,每当在工作表上内容更改时,单元格都会重新计算。...这意味着,仅对求和单元格区域中单元格设置加粗格式,使用该自定义函数求和不会改变,除非按F9键强制计算,或者在工作表输入内容导致工作表重新计算。...这个程序也提供了一个模板,可以稍作修改对其它格式设置单元格来求和

15210

Excel公式练习33: 将包含单元格多行多列单元格区域转换成单独去掉空单元格(续)

本次练习是:这个练习题与本系列上篇文章练习题相同,如下图1所示,不同是,上篇文章中将单元格区域A1:D6数据(其中包含单元格)转换到单独列(如图中所示单元格区域G1:G13)时,是以行方式进行...*"})) 统计单元格区域A1:D6非空单元格数量。并将该单元格作为辅助单元格。..."),{8,2},5) 应该获取单元格C2,即数据区域第2行第3列。...C2。...相关参考 Excel公式练习32:将包含单元格多行多列单元格区域转换成单独去掉空单元格 Excel公式练习4:将矩形数据区域转换成一行或者一列

2.2K10

Excel公式技巧68:查找获取所有匹配

利用这列分组数据,我们能方便地查找获取所有匹配。 如下图1所示工作表,我们想查找商品名称是“笔记本”且在区域A所有数据。 ?...图1 我们利用《Excel公式技巧67:按条件将数据分组标识》公式技巧,在单元格E3输入公式: =SUM(E2,AND(B3:B20=H3,C3:C20=I3)) 向下拉至单元格E20,从而构建了一个辅助列...可以看到,工作表以商品名称是“笔记本”且在区域A数据行为分界点连续编号。 在单元格G3输入公式: =MAX(E3:E20) 得到共有多少个满足条件查找。...在单元格H6输入公式: =IF(G6<=3,INDEX(B3:E20,MATCH(G6,E3:E20,0),COLUMNS( 向下向拉至第10行,向右拉至第J列。...公式很简单,其关键在于: MATCH(G6,E3:E 查找到第n个(由列G单元格指定)匹配所在位置。 而COLUMNS($H6:H6)则返回要获取所在列位置。

9.8K10

VBA程序:查找并列出指定工作表中所有合并单元格地址

标签:VBA 运行下面的VBA过程,将列出当前工作表中所有合并单元格地址。程序会新建一个工作表并重命名,然后在其中输入所有合并单元格地址。...On Error GoTo SafeToContinue Sheets(MySheet & "合并单元格").Select MsgBox "工作表 " & MySheet & "合并单元格...SafeToContinue: ' 初始化打印行计数器 counter = 2 ' 添加新工作表以保存结果 Sheets.Add ActiveSheet.Name = MySheet & "合并单元格..." NewSheet = ActiveSheet.Name Range("A1") = "合并单元格列表" ' 返回目标工作表 Sheets(MySheet).Select '查找合并单元格并将其地址写入新工作表...On Error GoTo 0 Application.ScreenUpdating = True If counter = 2 Then MsgBox "在工作表" & MySheet & " 没有找到合并单元格

17310

Excel应用实践23: 突出显示每行最小

当你修改设置了条件格式区域中数据时,Excel会自动判断并将该行最小突出显示,如下图4所示。 ? 图4 还有一种操作稍微复杂一点,但容易理解方法。...如下图5所示,先算出每行最小,即在单元格G1输入公式: =MIN(A1:E1) 下拉至相应行。 ?...图5 选择单元格区域A1:E1,单击功能区“开始”选项卡“样式”组“条件格式—突出显示单元格规则—等于”,如下图6所示。 ?...图6 在弹出“等于”对话框,输入其右侧含有该行最小单元格,或者单击右侧单元格选取器选取含有该行最小单元格,如下图7所示。 ? 图7 单击“确定”。...保持选中单元格区域A1:E1,向下拉至所有数据行,如图8所示。 ? 图8 大功告成!

6.2K10

问与答98:如何根据单元格动态隐藏指定行?

excelperfect Q:我有一个工作表,在单元格B1输入有数值,我想根据这个数值动态隐藏行2至行100。...具体地说,就是在工作表中放置一个命令按钮,如果单元格B1数值是10时,当我单击这个命令按钮时,会显示前10行,即第2行至第11行;再次单击该按钮后,隐藏全部行,即第2行至第100行;再单击该按钮,...则又会显示第2行至第11行,又单击该按钮,隐藏第2行至第100行……也就是说,通过单击该按钮,重复显示第2行至第11行与隐藏第2行至第100行操作。...注:这是在chandoo.org论坛上看到一个贴子,有点意思。...A:使用VBA代码如下: Public b As Boolean Sub HideUnhide() If b =False Then Rows("2:100").Hidden

6.2K10

Excel VBA解读(140): 从调用单元格获取先前计算

学习Excel技术,关注微信公众号: excelperfect 如果有一个依赖于一些计算慢资源用户定义函数,可能希望该用户定义函数在大多数情况下只返回其占用单元格中最后一次计算得到,并且只偶尔使用计算慢资源...假设要给用户定义函数传递一个计算慢资源参数,让一个开关告诉它何时使用计算慢资源。...GetSlowResource(vParam) End If End Function Application.Caller.Text 如果使用Application.Caller.Text,则不会获得循环引用,但会检索单元格显示为字符串格式化...因此,如果单元格被格式化为带有2个小数位数字,则检索到将被截断为2个小数位。...小结 有几种方法可以从VBA用户定义函数最后一次计算获取先前,但最好解决方案需要使用C++ XLL。

6.7K20
领券