Двойной щелчок на 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);
}
}