gpt4 book ai didi

c++ - 使用 ctrl + 鼠标滚轮缩放

转载 作者:行者123 更新时间:2023-11-30 01:55:18 25 4
gpt4 key购买 nike

我的问题很有趣。我正在研究 Qwt,我想分别启用 X 轴和 Y 轴的缩放。我只实现了 X 轴缩放,但 Y 轴不起作用。我听不懂。如果您提供建议,我将很高兴。

这是我的代码:

void Kmh::keyPressEvent(QKeyEvent *event)
{
zoom_in_out = new QwtPlotMagnifier( canvas() );

if(event->key() == Qt::Key_Shift)
{
zoom_in_out->setWheelModifiers(Qt::ShiftModifier);
zoom_in_out->setAxisEnabled(Qt::XAxis,false);
}
else if(event->key() == Qt::Key_Control)
{
zoom_in_out->setWheelModifiers(Qt::ControlModifier);
zoom_in_out->setAxisEnabled(Qt::YAxis,false);
}
}

shift + 鼠标滚轮用于 X 轴缩放。但是 ctrl + 鼠标滚轮同时缩放 X 轴和 Y 轴。我究竟做错了什么?

问候

注意:抱歉我的英语不好。

最佳答案

您完全误解了 Qwt API。我会说你有内存泄漏,大多数工具都无法检测到。QwtPlotMagnifier 应在构造期间创建一次,并在需要时一直存在。

我检查 the code我怀疑 QwtPlotMagnifier 使用事件过滤器来处理绘图事件。在施工期间调用一次应该可以解决问题:

void Kmh::setupWheelZooming()
{
QwtPlotMagnifier *zoom_x = new QwtPlotMagnifier( canvas() );
QwtPlotMagnifier *zoom_y = new QwtPlotMagnifier( canvas() );
zoom_x->setWheelModifiers(Qt::ShiftModifier);
zoom_x->setAxisEnabled(Qt::XAxis, true);
zoom_x->setAxisEnabled(Qt::YAxis,false);
zoom_y->setWheelModifiers(Qt::ControlModifier);
zoom_y->setAxisEnabled(Qt::XAxis,false);
zoom_y->setAxisEnabled(Qt::YAxis,true);
}

这应该可以在无需手动处理任何事件的情况下实现这一目的。

关于c++ - 使用 ctrl + 鼠标滚轮缩放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20879404/

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