之前找了很多关于这方面的资料,但是都不太满意,通过询问和尝试,终于找到了这样的一个方法,希望对你们有用:
先上代码:
self.searchLab = QLineEdit(self)
self.searchLab.setPlaceholderText('请输入需要查询的数据')
self.bt1 = QPushButton('点击查询', self)
self.bt1.clicked.connect(self.showMessage)
def showMessage(self):
wen = self.searchLab.text()
items = self.table.findItems(wen, QtCore.Qt.MatchExactly)
for r in range(self.rows):
for c in range(self.cols):
self.table.item(r, c).setBackground(QBrush(QColor(255, 255, 255)))
if items:
if len(items) > 0:
for item in items:
item.setBackground(QBrush(QColor(0, 255, 0)))
#item.setForeground(QBrush(QColor(255, 0, 0)))
else:
QMessageBox.information(self, "提示", "您所搜索的内容不在表格中!")
然后加下来是分段讲解:
self.searchLab = QLineEdit(self)
self.searchLab.setPlaceholderText('请输入需要查询的数据')
self.bt1 = QPushButton('点击查询', self)
self.bt1.clicked.connect(self.showMessage)
首先定义一个self.searchLab搜索框,再定义一个self.bt1的按钮,然后点击按钮会链接到showMessage()函数
wen = self.searchLab.text()
items = self.table.findItems(wen, QtCore.Qt.MatchExactly)
用wen来存放文本框输入的内容
for r in range(self.rows):
for c in range(self.cols):
self.table.item(r, c).setBackground(QBrush(QColor(255, 255, 255)))
用两个for循环分别遍历行和列,并将表格中每一个元素的背景都重置成白色
if items:
if len(items) > 0:
for item in items:
item.setBackground(QBrush(QColor(0, 255, 0)))
#item.setForeground(QBrush(QColor(255, 0, 0)))
else:
QMessageBox.information(self, "提示", "您所搜索的内容不在表格中!")
最后,如果表格中的某个元素与用户输入到文本框中的内容一样的话,就将其背景设置为其他颜色。
否则,如果文本框内容为空或者在表格中没有用户所要搜索的内容,那就弹出一个消息框,提示搜不到所要搜索的内容。