HM-SPMS/product/src/gui/plugin/TrendCurves/CTrendTreeView.cpp
2025-03-17 16:44:49 +08:00

66 lines
2.1 KiB
C++

#include "CTrendTreeView.h"
#include "CTrendTreeModel.h"
#include <QMenu>
#include <QMouseEvent>
#include <QContextMenuEvent>
CTrendTreeView::CTrendTreeView(QWidget *parent)
: QTreeView(parent)
{
}
void CTrendTreeView::contextMenuEvent(QContextMenuEvent *event)
{
CTrendTreeModel * pModel = dynamic_cast<CTrendTreeModel *>(model());
if(Q_NULLPTR != pModel)
{
QTreeWidgetItem * pItem = static_cast<QTreeWidgetItem*>(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<CTrendTreeModel *>(model());
if(Q_NULLPTR != pModel)
{
QModelIndex index = indexAt(event->pos());
QTreeWidgetItem * pItem = static_cast<QTreeWidgetItem*>(index.internalPointer());
if(Q_NULLPTR != pItem)
{
if(TAG_TYPE == pItem->type())
{
Qt::CheckState state = pItem->data(0, Qt::CheckStateRole).value<Qt::CheckState>();
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);
}