在PyQt5??中,懸停我們可以使用QListWidget::item:hover信號來(lái)檢測鼠標懸停在列表項上的時(shí)修色情況,當鼠標懸停在列表項上時(shí),改顏我們可以修改該項的懸停顏色以提供視覺(jué)反饋,以下是時(shí)修色一個(gè)簡(jiǎn)單的示例,展示了如何在鼠標懸停時(shí)修改列表項的改顏顏色。
我們需要創(chuàng )建一個(gè)QApplication和一個(gè)QListWidget,時(shí)修色我們可以通過(guò)addItem方法向列表中添加項,改顏接下來(lái),懸停我們將創(chuàng )建一個(gè)槽函數,時(shí)修色該函數將在(zai)鼠標懸停在(zai)列表項上時(shí)被調用,改顏在這個(gè)槽函數中,懸停我們將獲取當前項的時(shí)修色樣式表,并(bing)修改其顏色,改顏我們將QListWidget::item:hover信號連接到我們的槽函數。
以下是完整的代碼:
impor??t sysfrom PyQt5.QtWidgets import QApplication, QListWidget, QListWidgetItem, QVBoxLayout, QWidgetfrom PyQt5.QtCore import Qtclass HoverListWidget(QListWidget): def __init__(self, parent=None): super(HoverListWidget, self)._ヽ(′▽?zhuān)?ノ_init__(parent) self.setAcceptDrops(True) self.setDragEnabled(True) self.?????setDefaultDropAction(Qt.MoveAction) self.setMouseTracking(True) layout = QVBoxLayout(self) layout.s??etContentsMargins(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.itemDoubleCl(′ω`)icked.connect(s(′▽?zhuān)?elf.on_item_double_clicked) self.item:hover.connect(self.on_item(′?_?`)_hover) def on_item_double_cliヾ(′?`)?cked(self, item): print(f"Doubleclicked on item { item.text()} wi(′?`)th data { item.data(Qt.UserRole)}") def on_item_hover(self, item): # 修改懸停時(shí)的顏色為紅色 item.setBackgrounヾ(?■_■)ノdColor(Qt.red) # 延遲一段時(shí)間恢復原色,以避免快速移動(dòng)鼠標時(shí)顏色閃爍 QTimer.singleShot(??100, item.setBa(⊙_⊙)ckgroundColor)if __name__ == "__ma(╯‵□′)╯in__": app = QApplication(sys(′▽?zhuān)?).argv) window = QWidget() window.setWindowTi??tle("Hover List Widget Example") window.setGeometry(100, 100, 300, 200) list??_widget = HoverListWidge(T_T)t(??) window.setLayout(list_widget) window.show() sys.exit(app.exec_()??)在這個(gè)示例中,我?們創(chuàng )建了一個(gè)名為HoverListWidget的自定義類(lèi),該類(lèi)(lei)繼承自QListWidg??et,我們在其中定義了兩個(gè)槽函數:on_item_double_clicked和on_item??_hover,當用戶(hù)雙擊列表項?或鼠標懸停在列表項上時(shí),這些槽函數將被調用,在on_item_hover槽函數中,我們修改了當前項的背景顏ヽ(′ー`)ノ色為紅色,為了解決快速移動(dòng)鼠標時(shí)顏色閃爍的問(wèn)題,我們使用QTimer.singl??eShot方法延遲一段時(shí)間恢復原色。
運(yun)行這個(gè)示例,(⊙_⊙)你將看到一個(gè)包含??10個(gè)列表項的窗口,當你將鼠標懸停在列表項上時(shí),該項的背景顏色將變?yōu)榧t色,當你松開(kāi)鼠標按鈕時(shí),顏色將恢復為默認值,當你雙擊列表項時(shí),控制臺將輸出該項的文本和數據。


網(wǎng)站二維碼
導航
電話(huà)
短信
咨詢(xún)
地圖
分享