qt - 带有复选框的 QComboBox

标签 qt qcombobox qstandarditemmodel qabstractitemview

我正在创建带有复选框的 QComboBox。如何防止鼠标单击时 View 折叠?我希望能够设置复选框,但是每次单击项目时 - QComboBox 的下拉菜单都会折叠起来。

注意:目前我正在调试 Qt 源代码并寻找解决方法...

最佳答案

首先,您需要在组合框 View 中安装一个事件过滤器,即:

combobox->view()->viewport()->installEventFilter(someobj);

比您需要过滤组合框 View 上发生的所有鼠标释放事件以防止在单击它时关闭它:
bool SomeObject::eventFilter(QObject *obj, QEvent *event)
{
     if (event->type() == QEvent::MouseButtonRelease) {
         int index = view()->currentIndex().row();

         if (itemData(index, Qt::CheckStateRole) == Qt::Checked) {
            setItemData(index, Qt::Unchecked, Qt::CheckStateRole);
         } else {
            setItemData(index, Qt::Checked, Qt::CheckStateRole);
         }

         [..]

         return true;
     } else {
         // Propagate to the parent class.
         return QObject::eventFilter(obj, event);
     }
}

关于qt - 带有复选框的 QComboBox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22813494/

相关文章:

qt - QStandardItemModel -- 删除一行

multithreading - 从非 UI QThread 修改 QStandardItemModel?

qt - PySide (PyQt) QAbstractItemModel

c++ - xdotool 找不到 Qt 应用程序窗口,而 wmctrl 可以

qt - Qt4中简单的进程间通信

python - 项目数较多的 QComboBox 初始显示性能缓慢

python - PyQt:当自定义 QAbstractListModel 数据更改时如何更改 QComboBox 中的 currentIndex

c++ - 我如何/应该在 Qt 中的 ui 表单和数据成员之间创建自动链接?

python - PyQt5:如何从字典项列表生成 QTreeView?