【发布时间】:2021-01-03 15:41:06
【问题描述】:
我想防止将 QChartView 缩放为负 x 或 y 轴值。所以我试图在我的 QChartView 子类中拦截 mouseReleaseEvent ,然后在执行缩放之前修改 RubberBandRect 的坐标。但鼠标释放后,rubberBandRect 坐标似乎总是为零,所以我认为我没有使用正确的 RubberBandRect。
我正在尝试根据 QChartView 的文档进行调整(已添加重点):
void QChartView::mouseReleaseEvent(QMouseEvent *event)
如果松开鼠标左键并启用橡皮筋,则接受事件事件,并将视图放大到橡皮筋指定的矩形。
当我尝试在下面的代码 sn-p 中查看 RubberBandRect 中的实际值时,无论我如何使用光标进行缩放,矩形的 x/y 和高度/宽度值始终为零。
我还查看了这个问题的答案:Qt How to connect the rubberBandChanged signal,但在这种情况下,他们想要主窗口中的行为,这不是我想要的。谢谢!
class MyQChartView : public QtCharts::QChartView
{
Q_OBJECT
public:
MyQChartView(QWidget *parent = 0);
//...
protected:
void mouseReleaseEvent(QMouseEvent *event);
void keyPressEvent(QKeyEvent *event);
};
void MyQChartView::mouseReleaseEvent(QMouseEvent *event)
{
//always shows zeroes for the x and y position
if(event->button() == Qt::LeftButton){
std::cout << "x: " << this->rubberBandRect().x() << " y: " << this->rubberBandRect().y() << std::endl;
QChartView::mouseReleaseEvent(event);
}
//any other event
QChartView::mouseReleaseEvent(event);
}
【问题讨论】:
-
rubberBand()函数返回什么?您是否使用setRubberBand将此值设置为不是NoRubberBand的值? -
@MaximSkvortsov 橡皮筋设置为矩形橡皮筋(上面的 sn-p 中没有显示)
-
如果是,看源码:code.woboq.org/qt5/qtcharts/src/charts/… 必须设置成合适的值