#include #include #include #include #include "beetview.h" BeetView::BeetView(QWidget *parent) : QTreeView(parent) { } void BeetView::expandOrCollapse(int mode){ QModelIndexList sel = selectionModel()->selectedRows(); for(QModelIndex i : sel){ if(mode == Expand){ expand(i); }else if(mode == Collapse){ collapse(i); } expandOrCollapseRecursive(i, mode); } } void BeetView::expandOrCollapseRecursive(const QModelIndex &idx, int mode){ const QSortFilterProxyModel *pm = qobject_cast(model()); for(int i = 0; i < pm->rowCount(idx); ++i){ QModelIndex curIdx = pm->index(i, 0, idx); if(curIdx.isValid()){ if(mode == Expand){ expand(curIdx); }else if(mode == Collapse){ collapse(curIdx); } expandOrCollapseRecursive(curIdx, mode); } } } void BeetView::contextMenuEvent(QContextMenuEvent *e){ QMenu ctxMenu; for(QAction *a : actions()){ ctxMenu.addAction(a); } ctxMenu.exec(e->globalPos()); }