ui.tree_view->setExpandsOnDoubleClick(false);
QObject::connect(ui.tree_view, &QTreeView::clicked, [this]() {
if (ui.tree_view->isExpanded(ui.tree_view->currentIndex())) {
ui.tree_view->collapse(ui.tree_view->currentIndex());
}else{
ui.tree_view->expand(ui.tree_view->currentIndex());
}
});
Протестировано на версии Qt для Visual Studio.
Альтернативный метод, который открывается и закрывается одним щелчком мыши.
Этот метод не требует дополнительных функций, так как используетлямбда.
Поместите это в свой конструктор для запуска.
примечание: я устанавливаю раскрытие при двойном щелчке на false, потому что по логике, когда расширяется один щелчок, два щелчка отменят развертывание, которое сделал первый.делает поток более плавным и последовательным.