Qtablewidget 鼠标悬浮但不改变单元格颜色
时间: 2023-08-08 18:05:04 浏览: 198
要实现QTableWidget鼠标悬停但不改变单元格颜色,您可以使用QTableWidget的itemEntered()和itemExited()信号,然后自定义样式表来实现。
以下是一个示例代码:
```python
from PyQt5.QtWidgets import QTableWidget, QApplication, QTableWidgetItem
from PyQt5.QtCore import Qt
class MyTableWidget(QTableWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.setStyleSheet("""
QTableWidget::item:hover {
background-color: rgba(255, 255, 255, 0.2);
}
QTableWidget::item:selected {
background-color: rgba(255, 255, 255, 0.5);
}
""")
self.setMouseTracking(True)
self.itemEntered.connect(self.on_item_entered)
self.itemExited.connect(self.on_item_exited)
def on_item_entered(self, item):
self.setStyleSheet("""
QTableWidget::item:hover {
background-color: rgba(255, 255, 255, 0.2);
}
QTableWidget::item:selected {
background-color: rgba(255, 255, 255, 0.5);
}
""")
item.setBackground(Qt.transparent)
def on_item_exited(self, item):
self.setStyleSheet("""
QTableWidget::item:hover {
background-color: rgba(255, 255, 255, 0.2);
}
QTableWidget::item:selected {
background-color: rgba(255, 255, 255, 0.5);
}
""")
item.setBackground(Qt.transparent)
if __name__ == '__main__':
app = QApplication([])
table = MyTableWidget()
table.setColumnCount(2)
table.setRowCount(2)
table.setItem(0, 0, QTableWidgetItem("Item 1"))
table.setItem(0, 1, QTableWidgetItem("Item 2"))
table.setItem(1, 0, QTableWidgetItem("Item 3"))
table.setItem(1, 1, QTableWidgetItem("Item 4"))
table.show()
app.exec_()
```
在这个示例代码中,我们自定义了QTableWidget的样式表,并在鼠标进入和离开item时设置item的背景色为透明,以实现鼠标悬浮但不改变单元格颜色的效果。
阅读全文