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

如何将QComboBox改造为带复选框的下拉控件?(Maya Qt环境)

Maya Qt 带复选框下拉控件实现方案

原生Qt的QComboBox默认是单选交互,可通过修改列表项标志、自定义事件处理的方式实现复选效果,适配Maya的PySide2/PySide6环境,具体实现步骤如下:

步骤1:修改现有下拉项的可勾选属性

给每个添加的列表项开启可勾选标记,初始化未勾选状态:

from PySide2 import QtCore, QtWidgets

# 你原有的控件初始化逻辑
self.transform_dropdown = QtWidgets.QComboBox()
self.transform_dropdown.addItem("Freeze transform")
self.transform_dropdown.addItem("Freeze rotation")
self.transform_dropdown.addItem("Freeze scale")

# 给所有下拉项添加可勾选属性
for i in range(self.transform_dropdown.count()):
    item = self.transform_dropdown.model().item(i, 0)
    # 追加项标志:可选、可勾选、可用
    item.setFlags(item.flags() | QtCore.Qt.ItemIsUserCheckable | QtCore.Qt.ItemIsEnabled)
    # 初始化勾选状态为未勾选
    item.setCheckState(QtCore.Qt.Unchecked)

步骤2:覆盖默认单选交互逻辑

默认QComboBox点击任意项会直接收起下拉框并选中该项,需要绑定事件过滤器拦截点击事件,实现点击切换勾选状态且不自动收起下拉框:

# 给下拉列表视图绑定事件过滤器
self.transform_dropdown.view().installEventFilter(self)

# 在你的控件类中添加如下事件过滤方法
def eventFilter(self, obj, event):
    if obj == self.transform_dropdown.view() and event.type() == QtCore.QEvent.MouseButtonRelease:
        # 获取点击的项索引
        index = obj.indexAt(event.pos())
        if index.isValid():
            # 切换当前项的勾选状态
            item = self.transform_dropdown.model().itemFromIndex(index)
            item.setCheckState(QtCore.Qt.Checked if item.checkState() == QtCore.Qt.Unchecked else QtCore.Qt.Unchecked)
        # 阻止事件继续传递,避免下拉框自动收起
        return True
    return super().eventFilter(obj, event)

如果不想修改父类的eventFilter方法,也可以自定义继承QComboBox的复选下拉子类,把上述逻辑封装在子类内部复用。

步骤3:查询勾选状态

需要获取勾选结果时,遍历所有下拉项判断勾选状态即可:

def get_checked_items(self):
    checked_list = []
    for i in range(self.transform_dropdown.count()):
        item = self.transform_dropdown.model().item(i, 0)
        if item.checkState() == QtCore.Qt.Checked:
            checked_list.append(item.text())
    return checked_list

# 调用示例:print(get_checked_items()) 会返回所有已勾选的选项文本

适配说明:Maya2025及以上版本使用的是PySide6,仅需把导入语句的PySide2替换为PySide6即可,其余逻辑完全兼容。

内容的提问来源于stack exchange,提问作者Michael Isaakidis

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 03:21:04