鼠标滚轮实现图像放大缩小的主要思想:通过wheelEvent来获得鼠标滚轮的angleDelta,即滚轮转角。然后通过数据类型转换,将读取的值转换成整型数值叠加到图像的尺寸长和宽上,从而实现图像的放大和缩小。
注意:滚轮向上滑转角为正,所以图像放大。滚轮向下滑转角为负,所以图像缩小。
下边直接上代码,头文件中只需要加上使用鼠标滚轮的声明函数就行:
void wheelEvent(QWheelEvent *event); // 用鼠标滚轮事件实现图像放大缩小
mainwindow.cpp中直接添加:
void MainWindow::wheelEvent(QWheelEvent *event)
{
QPoint numDegrees; // 定义指针类型参数numDegrees用于获取滚轮转角
numDegrees = event->angleDelta(); // 获取滚轮转角
int step = 0; // 设置中间参数step用于将获取的数值转换成整数型
if (!numDegrees.isNull()) // 判断滚轮是否转动
{
step = numDegrees.y(); // 将滚轮转动数值传给中间参数step
}
event->accept(); // 获取事件
int currentWidth = imgLabel->width(); // 获取当前图像的宽
int currentHeight = imgLabel->height(); // 获取当前图像的高
currentWidth += step; // 对当前图像的高累加
currentHeight += step; // 对当前图像的宽累加
if (step > 0) // 判断图像是放大还是缩小
{
QString imgsize = QString("图像放大,尺寸为:%1 * %2")
.arg(currentWidth).arg(currentHeight);
qDebug() << imgsize; // 打印放大后的图像尺寸
}
else
{
QString imgsize = QString("图像缩小,尺寸为:%1 * %2")
.arg(currentWidth).arg(currentHeight);
qDebug() << imgsize; // 打印缩小后的图像尺寸
}
imgLabel->resize(currentWidth, currentHeight); // 通过更新图像显示控件的大小来更新图像大小
}
持续更新~