1) Попробуй сделать так:
void XmlTree::mousePressEvent(QMouseEvent *event)
{
if(event->button()==Qt::RightButton) {
currentItem()->setForeground(0,Qt::magenta);
return;
}
QTreeWidget::mousePressEvent(event);
}
2) Обрати внимание на сигнал
void customContextMenuRequested ( const QPoint & pos )
Законекть этот сигнал со слотом:
XmlTree::XmlTree(...)
{
...
connect(this, SIGNAL(customContextMenuRequested(const QPoint &)),this, SLOT(yourSlot(const QPoint &)));
...
}
void XmlTree::yourSlot(const QPoint &pt)
{
QTreeWidgetItem *item = itemAt(pt);
if (!item) return;
...
}
Ты получишь указатель на элемент, по которому произвёл клик правой кнопкой мыши. Далее делай что нужно.