新聞中心
在PyQt5中,我們可以使用QListWidget::item:hover信號來檢測鼠標(biāo)懸停在列表項上的情況,當(dāng)鼠標(biāo)懸停在列表項上時,我們可以修改該項的顏色以提供視覺反饋,以下是一個簡單的示例,展示了如何在鼠標(biāo)懸停時修改列表項的顏色。

成都創(chuàng)新互聯(lián)公司成立于2013年,先為華亭等服務(wù)建站,華亭等地企業(yè),進行企業(yè)商務(wù)咨詢服務(wù)。為華亭企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
我們需要創(chuàng)建一個QApplication和一個QListWidget,我們可以通過addItem方法向列表中添加項,接下來,我們將創(chuàng)建一個槽函數(shù),該函數(shù)將在鼠標(biāo)懸停在列表項上時被調(diào)用,在這個槽函數(shù)中,我們將獲取當(dāng)前項的樣式表,并修改其顏色,我們將QListWidget::item:hover信號連接到我們的槽函數(shù)。
以下是完整的代碼:
import sys
from PyQt5.QtWidgets import QApplication, QListWidget, QListWidgetItem, QVBoxLayout, QWidget
from PyQt5.QtCore import Qt
class HoverListWidget(QListWidget):
def __init__(self, parent=None):
super(HoverListWidget, self).__init__(parent)
self.setAcceptDrops(True)
self.setDragEnabled(True)
self.setDefaultDropAction(Qt.MoveAction)
self.setMouseTracking(True)
layout = QVBoxLayout(self)
layout.setContentsMargins(0, 0, 0, 0)
layout.setSpacing(0)
for i in range(10):
item = QListWidgetItem(f"Item {i}")
item.setData(Qt.UserRole, f"Item {i} Data")
self.addItem(item)
self.itemDoubleClicked.connect(self.on_item_double_clicked)
self.item:hover.connect(self.on_item_hover)
def on_item_double_clicked(self, item):
print(f"Doubleclicked on item {item.text()} with data {item.data(Qt.UserRole)}")
def on_item_hover(self, item):
# 修改懸停時的顏色為紅色
item.setBackgroundColor(Qt.red)
# 延遲一段時間恢復(fù)原色,以避免快速移動鼠標(biāo)時顏色閃爍
QTimer.singleShot(100, item.setBackgroundColor)
if __name__ == "__main__":
app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("Hover List Widget Example")
window.setGeometry(100, 100, 300, 200)
list_widget = HoverListWidget()
window.setLayout(list_widget)
window.show()
sys.exit(app.exec_())
在這個示例中,我們創(chuàng)建了一個名為HoverListWidget的自定義類,該類繼承自QListWidget,我們在其中定義了兩個槽函數(shù):on_item_double_clicked和on_item_hover,當(dāng)用戶雙擊列表項或鼠標(biāo)懸停在列表項上時,這些槽函數(shù)將被調(diào)用,在on_item_hover槽函數(shù)中,我們修改了當(dāng)前項的背景顏色為紅色,為了解決快速移動鼠標(biāo)時顏色閃爍的問題,我們使用QTimer.singleShot方法延遲一段時間恢復(fù)原色。
運行這個示例,你將看到一個包含10個列表項的窗口,當(dāng)你將鼠標(biāo)懸停在列表項上時,該項的背景顏色將變?yōu)榧t色,當(dāng)你松開鼠標(biāo)按鈕時,顏色將恢復(fù)為默認(rèn)值,當(dāng)你雙擊列表項時,控制臺將輸出該項的文本和數(shù)據(jù)。
文章名稱:PyQt5QListWidget::item:hover懸停時修改顏色
本文來源:http://www.5511xx.com/article/djcpish.html


咨詢
建站咨詢
