Я реализовал контекстные меню в элементах QTreeView со следующим кодом
MyDerivedQTreeView->setModel(MyDerivedQAbstractItemModel);
MyDerivedQTreeView->setContextMenuPolicy(Qt::CustomContextMenu);
connect(MyDerivedQTreeView,
SIGNAL(customContextMenuRequested(const QPoint &)),
MyDerivedQAbstractItemModel(),
SLOT(contextualMenu(const QPoint &)));
void MyDerivedQAbstractItemModel::contextualMenu(const QPoint& point)
{
QMenu *menu = new QMenu;
menu->addAction(QString("Test Item"), this, SLOT(test_slot()));
menu->exec(MyDerivedQTreeView->mapToGlobal(point));
}
MyDerivedQAbstractItemModel :: contextualMenu () вызывается, и я вижу контекстное меню.
Проблема в том, что контекстное меню должно отображаться только в том случае, если пользователь щелкает правой кнопкой мыши элемент, и оно должно быть настроено в соответствии с выбранным элементом.
Как узнать, выбран ли какой-либо элемент из информации QPoint? Я на Qt 4.5.3.