53 lines
1.1 KiB
C++
53 lines
1.1 KiB
C++
#include "LayerTreeView.h"
|
|
#include "LayerTreeViewMenuProvider.h"
|
|
#include <QContextMenuEvent>
|
|
#include <QMenu>
|
|
|
|
LayerTreeView::LayerTreeView(QWidget* parent)
|
|
: QTreeView(parent), m_menuProvider(nullptr)
|
|
{
|
|
}
|
|
|
|
LayerTreeView::~LayerTreeView()
|
|
{
|
|
delete m_menuProvider;
|
|
}
|
|
|
|
void LayerTreeView::setMenuProvider(LayerTreeViewMenuProvider* provider)
|
|
{
|
|
m_menuProvider = provider;
|
|
}
|
|
|
|
void LayerTreeView::contextMenuEvent(QContextMenuEvent* event)
|
|
{
|
|
if (!m_menuProvider)
|
|
return;
|
|
|
|
const QModelIndex idx = indexAt(event->pos());
|
|
if (idx.isValid())
|
|
setCurrentIndex(idx);
|
|
else
|
|
setCurrentIndex(QModelIndex());
|
|
|
|
QMenu* menu = m_menuProvider->createContextMenu();
|
|
menu->setStyleSheet(R"(
|
|
QMenu {
|
|
background-color: #2a5dec;
|
|
color: white;
|
|
}
|
|
QMenu::item:selected {
|
|
background-color: #1a4ddc;
|
|
}
|
|
QMenu::separator {
|
|
height: 1px;
|
|
background: white;
|
|
}
|
|
)");
|
|
if (menu)
|
|
{
|
|
menu->exec(event->globalPos());
|
|
delete menu;
|
|
}
|
|
//QTreeView::contextMenuEvent(event);
|
|
}
|