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

成都創(chuàng)新互聯(lián)公司成立于2013年,先為華亭等服務(wù)建站,華亭等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為華亭企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。
我們需要?jiǎng)?chuàng)建一個(gè)QApplication和一個(gè)QListWidget,我們可以通過(guò)addItem方法向列表中添加項(xiàng),接下來(lái),我們將創(chuàng)建一個(gè)槽函數(shù),該函數(shù)將在鼠標(biāo)懸停在列表項(xiàng)上時(shí)被調(diào)用,在這個(gè)槽函數(shù)中,我們將獲取當(dāng)前項(xiàng)的樣式表,并修改其顏色,我們將QListWidget::item:hover信號(hào)連接到我們的槽函數(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):
# 修改懸停時(shí)的顏色為紅色
item.setBackgroundColor(Qt.red)
# 延遲一段時(shí)間恢復(fù)原色,以避免快速移動(dòng)鼠標(biāo)時(shí)顏色閃爍
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_())
在這個(gè)示例中,我們創(chuàng)建了一個(gè)名為HoverListWidget的自定義類,該類繼承自QListWidget,我們?cè)谄渲卸x了兩個(gè)槽函數(shù):on_item_double_clicked和on_item_hover,當(dāng)用戶雙擊列表項(xiàng)或鼠標(biāo)懸停在列表項(xiàng)上時(shí),這些槽函數(shù)將被調(diào)用,在on_item_hover槽函數(shù)中,我們修改了當(dāng)前項(xiàng)的背景顏色為紅色,為了解決快速移動(dòng)鼠標(biāo)時(shí)顏色閃爍的問(wèn)題,我們使用QTimer.singleShot方法延遲一段時(shí)間恢復(fù)原色。
運(yùn)行這個(gè)示例,你將看到一個(gè)包含10個(gè)列表項(xiàng)的窗口,當(dāng)你將鼠標(biāo)懸停在列表項(xiàng)上時(shí),該項(xiàng)的背景顏色將變?yōu)榧t色,當(dāng)你松開(kāi)鼠標(biāo)按鈕時(shí),顏色將恢復(fù)為默認(rèn)值,當(dāng)你雙擊列表項(xiàng)時(shí),控制臺(tái)將輸出該項(xiàng)的文本和數(shù)據(jù)。
本文名稱:PyQt5QListWidget::item:hover懸停時(shí)修改顏色
文章鏈接:http://m.fisionsoft.com.cn/article/djcpish.html


咨詢
建站咨詢
