#include "CTrendTreeView.h" #include "CTrendTreeModel.h" #include #include #include CTrendTreeView::CTrendTreeView(QWidget *parent) : QTreeView(parent) { } void CTrendTreeView::contextMenuEvent(QContextMenuEvent *event) { CTrendTreeModel * pModel = dynamic_cast(model()); if(Q_NULLPTR != pModel) { QTreeWidgetItem * pItem = static_cast(indexAt(event->pos()).internalPointer()); if(Q_NULLPTR != pItem) { if(DEV_TYPE == pItem->type()) { QMenu menu; menu.addAction(tr("全选"), [=](){ pModel->setChildrenCheckState(indexAt(event->pos()), Qt::Checked); }); menu.addAction(tr("清空"), [=](){ pModel->setChildrenCheckState(indexAt(event->pos()), Qt::Unchecked); }); menu.exec(event->globalPos()); } } } return; } void CTrendTreeView::mouseDoubleClickEvent(QMouseEvent *event) { CTrendTreeModel * pModel = dynamic_cast(model()); if(Q_NULLPTR != pModel) { QModelIndex index = indexAt(event->pos()); QTreeWidgetItem * pItem = static_cast(index.internalPointer()); if(Q_NULLPTR != pItem) { if(TAG_TYPE == pItem->type()) { Qt::CheckState state = pItem->data(0, Qt::CheckStateRole).value(); if (Qt::Checked == state) { state = Qt::Unchecked; } else { state = Qt::Checked; } pModel->setData(index, state, Qt::CheckStateRole); update(); } else if(DEV_GROUP_TYPE == pItem->type()) { int row=pModel->parent(index).row(); pModel->loadTagInfoByDevGroup(pItem->data(0,ItemTagRole).toString()); expand(pModel->index(row,0)); } } } return QTreeView::mouseDoubleClickEvent(event); }