我正在尝试实现鼠标滚轮放大/缩小。它可以工作,但当我放大/缩小时,图像变得越来越小,并使用缩放功能同时向上/向下滚动。看起来事件同时存在并协同工作。
我找不到如何使用鼠标滚轮禁用滚动。可能有一种方法可以仅使用鼠标光标进行滚动(通过单击滚动条)。
发布于 2021-03-11 23:54:50
我覆盖了鼠标滚轮的main方法,但它导致了我上面写的效果。
void MainWindow::wheelEvent( QWheelEvent* event )通过使用事件筛选器解决。下面的代码提供了按住ctrl按钮进行放大/缩小的功能。
bool MainWindow::eventFilter(QObject *obj, QEvent *event)
{
if (event->type() == QEvent::GraphicsSceneWheel)
{
ui->GV_image->setTransformationAnchor(QGraphicsView::AnchorUnderMouse);
double scaleFactor = 1.15;
bool ok = QApplication::keyboardModifiers() & Qt::ControlModifier;
if (ok)
{
QGraphicsSceneWheelEvent *scrollevent = static_cast<QGraphicsSceneWheelEvent *>(event);
if (scrollevent->delta() > 0)
{
ui->GV_image->scale(scaleFactor, scaleFactor);
}
else
{
ui->GV_image->scale(1/scaleFactor, 1/scaleFactor);
}
}
event->accept();
return true;
}
return false;
}将这一行放入构造函数或其他init函数中
QGraphicsView *GV_image;
...
ui->GV_image->scene()->installEventFilter(this);https://stackoverflow.com/questions/66585452
复制相似问题