Вы должны наследовать QList Виджет и поймать мыши событие
mylistwidget.h:
#ifndef MYLISTWIDGET_H
#define MYLISTWIDGET_H
#include <QListWidget>
class MyListWidget : public QListWidget
{
Q_OBJECT
public:
MyListWidget(QWidget *parent = 0);
~MyListWidget();
private:
void mousePressEvent(QMouseEvent *event);
signals:
void rightClick(QPoint* pos);
};
#endif // MYLISTWIDGET_H
mylistwidget.cpp:
#include "mylistwidget.h"
#include <QMouseEvent>
MyListWidget::MyListWidget(QWidget *parent) :
QListWidget(parent)
{
}
MyListWidget::~MyListWidget()
{
}
void MyListWidget::mousePressEvent(QMouseEvent *event)
{
if(event->button() == Qt::RightButton){
emit rightClick(&event->pos());
} else {
QListWidget::mousePressEvent(event);
}
}
создать объект и подключить к слоту:
MyListWidget* listWidget = new MyListWidget(this);
connect(listWidget,SIGNAL(rightClick(QPoint*)),
this,SLOT(onRightClick(QPoint*)));
получить деталь в в слоте:
void onRightClick(QPoint *pos)
{
QListWidgetItem* item = listWidget->itemAt(pos);
}
делать все, что вам нравится с пунктом :)
Вы посмотрели на это http://stackoverflow.com/questions/31383519/qt-rightclick-on-qlistwidget-opens-contextmenu-and-delete-item – demonplus
Я сделал все, что упоминалось в этом, было очень просто. Но это не работает. – user5603723