Двойной щелчок на QTreeView развернуть элемент стрелка

В моем проекте Qt 5.6.2 я заметил, что если вы дважды щелкните на QTreeView item (фактическая часть стрелки, а не текст элемента) первый щелчок переключает расширенное состояние, а второй щелчок ничего не делает.

Вместо этого я бы хотел, чтобы второй щелчок снова переключал расширенное состояние.

Я старался treeView->setExpandsOnDoubleClick(false); но поведение остается тем же, поскольку оно, по-видимому, никак не влияет на часть элемента со стрелкой. Похоже, Qt решает, как стрелка должна реагировать на двойной щелчок независимо от свойства expandsOnDoubleClick, Как я могу решить это?

(Примечание: такого поведения не было в Qt 5.0.2. Неуверен в промежуточных версиях Qt.)

1 ответ

Решение

Я смог решить это с помощью подклассов QProxyStyle и проверка на подсказку стиля SH_ListViewExpand_SelectMouseType и возвращая значение 3 вместо значения по умолчанию 2.

class MyProxyStyle : public QProxyStyle
{
public:
    int styleHint(StyleHint hint, const QStyleOption *option = 0, const QWidget *widget = 0, QStyleHintReturn *returnData = 0) const
    {
        if(hint == QStyle::SH_ListViewExpand_SelectMouseType)
            return 3;
        return QProxyStyle::styleHint(hint, option, widget, returnData);
    }
}
Другие вопросы по тегам