我希望防止QChartView缩放到负x或y轴值。因此,我试图在我的QChartView子类中拦截mouseReleaseEvent,然后在执行缩放之前修改rubberBandRect的坐标。但是,似乎在鼠标释放后,rubberBandRect坐标始终为零,因此我认为我没有使用正确的rubberBandRect。
我正在尝试根据QChartView文档进行调整(已加重):
void QChartView :: mouseReleaseEvent(QMouseEvent * event)
如果释放了左鼠标按钮并启用了橡皮筋,则接受事件event并将视图缩放到由橡皮筋指定的矩形中。
当我尝试查看下面代码片段中rubberBandRect的实际值时,无论我如何使用光标缩放,矩形的x / y和高度/宽度值始终为零。
我也看了这个问题的答案:Qt如何连接rubberBandChanged信号,但是在那个情况下,他们想要在主窗口中实现这个功能,这不是我想要的。谢谢!
我正在尝试根据QChartView文档进行调整(已加重):
void QChartView :: mouseReleaseEvent(QMouseEvent * event)
如果释放了左鼠标按钮并启用了橡皮筋,则接受事件event并将视图缩放到由橡皮筋指定的矩形中。
当我尝试查看下面代码片段中rubberBandRect的实际值时,无论我如何使用光标缩放,矩形的x / y和高度/宽度值始终为零。
我也看了这个问题的答案:Qt如何连接rubberBandChanged信号,但是在那个情况下,他们想要在主窗口中实现这个功能,这不是我想要的。谢谢!
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
的值? - Maxim Skvortsov