Ich habe ein Code-Segment, das ein mousePressEvent aufruft. Ich habe die Linksklick-Ausgabe der Koordinaten des Cursors, und ich habe Rechtsklick das gleiche tun, aber ich möchte auch den Rechtsklick ein Kontextmenü öffnen. Der Code, den ich bisher habe, ist:rightclick-Ereignis in Qt, um ein Kontextmenü zu öffnen
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));
}
}
}
Ich weiß, dass mein Problem in der Natur sehr grundlegender Bedeutung ist, und das contextmenu 'nicht richtig erklärt. Ich habe diesen Code aus vielen Quellen zusammengestellt und weiß nicht, wie ich etwas in C++ deklariere. Jeder Rat würde sehr geschätzt werden.