Tôi có một đoạn mã gọi hàm mousePressEvent. Tôi có đầu ra nhấp chuột trái các tọa độ của con trỏ, và tôi có rightclick làm như vậy, nhưng tôi cũng muốn có rightclick mở một menu ngữ cảnh. Mã tôi có cho đến nay là:sự kiện rightclick trong Qt để mở menu ngữ cảnh
void plotspace::mousePressEvent(QMouseEvent*event)
{
double trange = _timeonright - _timeonleft;
int twidth = width();
double tinterval = trange/twidth;
int xclicked = event->x();
_xvaluecoordinate = _timeonleft+tinterval*xclicked;
double fmax = Data.plane(X,0).max();
double fmin = Data.plane(X,0).min();
double fmargin = (fmax-fmin)/40;
int fheight = height();
double finterval = ((fmax-fmin)+4*fmargin)/fheight;
int yclicked = event->y();
_yvaluecoordinate = (fmax+fmargin)-finterval*yclicked;
cout<<"Time(s): "<<_xvaluecoordinate<<endl;
cout<<"Flux: "<<_yvaluecoordinate<<endl;
cout << "timeonleft= " << _timeonleft << "\n";
returncoordinates();
emit updateCoordinates();
if (event->button()==Qt::RightButton)
{
contextmenu->setContextMenuPolicy(Qt::CustomContextMenu);
connect(contextmenu, SIGNAL(customContextMenuRequested(const QPoint&)),
this, SLOT(ShowContextMenu(const QPoint&)));
void A::ShowContextMenu(const QPoint &pos)
{
QMenu *menu = new QMenu;
menu->addAction(tr("Remove Data Point"), this,
SLOT(test_slot()));
menu->exec(w->mapToGlobal(pos));
}
}
}
Tôi biết rằng vấn đề của tôi rất cơ bản trong tự nhiên và 'contextmenu' không được khai báo đúng cách. Tôi đã ghép nối mã này với nhiều nguồn khác nhau, và không biết cách khai báo một cái gì đó trong C++. Mọi lời khuyên sẽ được đánh giá cao.