You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何禁用QML ListView的委托悬停高亮效果

解决ListView委托悬停高亮问题

要彻底禁用ListView委托的悬停高亮效果,可尝试以下几种方案:

方法一:设置透明高亮组件

直接给ListView指定完全透明的highlight组件,覆盖默认高亮样式:

ListView {
    id: friendsListView
    anchors.top: parent
    width: parent.width
    height: friendsModel.count *
            ((stl.setsCmnTxtHght + stl.setsCmnBtnHght) * 2 + stl.setsCmnVertSpace * 3 + stl.setsCmnVertSpace);
    interactive: false
    spacing: stl.setsCmnVertSpace

    // 添加透明高亮组件
    highlight: Rectangle {
        color: "transparent"
        opacity: 0
    }

    model: ListModel {
        id: friendsModel
    }

    delegate: Widgets.FriendInfoWidget {
        id: friendsInfoDelegate
        mActive: model.isActive
        isCoach: model.isCoach
        mName: model.nickname
        mID: model.ID
        mIndex: (index + 1)
    }
    Component.onCompleted: refreshFriendsModel();
}

方法二:在委托内部禁用悬停逻辑

如果高亮是FriendInfoWidget自身实现的悬停效果,需要修改委托组件的代码:
打开Widgets.FriendInfoWidget的定义,找到处理悬停的相关代码(比如MouseArea的hoverEnabled属性或onHovered信号逻辑),将hoverEnabled设为false,或者移除悬停触发的样式变化:

// 在FriendInfoWidget内部示例
MouseArea {
    hoverEnabled: false // 禁用悬停检测
    // 其他鼠标事件逻辑...
}

方法三:彻底屏蔽ListView鼠标交互

若ListView无需任何鼠标交互,除了interactive: false,还可添加mouseAreaEnabled: false(部分Qt版本支持),彻底阻断鼠标事件:

ListView {
    id: friendsListView
    interactive: false
    mouseAreaEnabled: false // 禁用内部鼠标区域
    // 其余原有属性...
}

内容的提问来源于stack exchange,提问作者Caboom Bom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 08:30:47