gpt4 book ai didi

c++ - 管理 Qt 中的右键和左键单击

转载 作者:太空宇宙 更新时间:2023-11-04 11:32:26 33 4
gpt4 key购买 nike

我有一个复杂的 Qt GUI,其中 GUI 的一部分显示带有各种数据点的图表。

当前左键或右键单击绘图时,它会返回单击位置的 x-y 值。我的工作是更新它,以便左键单击仍然执行相同的操作,但右键单击选择最近的数据点并打开上下文菜单允许我删除所述数据点。这个想法是手动能够删除异常值。

更新:我认为我找到了当前负责返回 x-y 值的代码段:

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();

}

就像我说的,我需要将其变成左键单击执行相同的操作,然后右键单击打开上下文菜单。任何建议将不胜感激。

最佳答案

您必须检查使用了哪个鼠标按钮。通常我更喜欢处理 mouseReleaseEvent 而不是 mousePressEvent 因为它更好地复制了传统的鼠标行为。但是这两个事件都有效。一个例子:

void mouseReleaseEvent(QMouseEvent *e)
{
if (e->button() == Qt::LeftButton) // Left button...
{
// Do something related to the left button
}
else if (e->button() == Qt::RightButton) // Right button...
{
// Do something related to the right button
}
}

如果您愿意,您也可以处理 Qt::MidButton

关于c++ - 管理 Qt 中的右键和左键单击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24213722/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com