PyQt5QListWidget::item:hover悬停时修改颜色

在PyQt5中,我们可以使用QListWidget::item:hover信号来检测鼠标悬停在列表项上的情况,当鼠标悬停在列表项上时,我们可以修改该项的颜色以提供视觉反馈,以下是一个简单的示例,展示了如何在鼠标悬停时修改列表项的颜色。

成都创新互联公司成立于2013年,先为华亭等服务建站,华亭等地企业,进行企业商务咨询服务。为华亭企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

我们需要创建一个QApplication和一个QListWidget,我们可以通过addItem方法向列表中添加项,接下来,我们将创建一个槽函数,该函数将在鼠标悬停在列表项上时被调用,在这个槽函数中,我们将获取当前项的样式表,并修改其颜色,我们将QListWidget::item:hover信号连接到我们的槽函数。

以下是完整的代码:

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)
        # 延迟一段时间恢复原色,以避免快速移动鼠标时颜色闪烁
        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_())

在这个示例中,我们创建了一个名为HoverListWidget的自定义类,该类继承自QListWidget,我们在其中定义了两个槽函数:on_item_double_clickedon_item_hover,当用户双击列表项或鼠标悬停在列表项上时,这些槽函数将被调用,在on_item_hover槽函数中,我们修改了当前项的背景颜色为红色,为了解决快速移动鼠标时颜色闪烁的问题,我们使用QTimer.singleShot方法延迟一段时间恢复原色。

运行这个示例,你将看到一个包含10个列表项的窗口,当你将鼠标悬停在列表项上时,该项的背景颜色将变为红色,当你松开鼠标按钮时,颜色将恢复为默认值,当你双击列表项时,控制台将输出该项的文本和数据。

分享标题:PyQt5QListWidget::item:hover悬停时修改颜色
分享URL:http://www.mswzjz.com/qtweb/news32/175882.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联