我不确定,如果你想滚轮只曾经被用于缩放图像,或者如果你想滚轮来控制,当图像比滚动区域视小放大,然后使用滚动当图像大于滚动区视口时滚轮进行滚动。在任何一种情况下,您都应该能够自定义如何使用以下方式处理车轮:
由于我没有真正尝试过这个,我不确定它是否会起作用。希望如果您安装了事件过滤器并将事件设置为忽略,该事件仍将传播回您的图像小部件。这将允许您保留当前在图像小部件中的鼠标处理完好无损。
bool YourImageWidget::eventFilter(QObject *obj, QEvent *event)
{
if((obj == scrollAreaPointer) && (event->type() == QEvent::Wheel))
{
if(!scrollAreaShouldHandleWheel)
{
event->ignore();
}
}
return false; // always pass the event back to the scroll area
}
的scrollAreaShouldHandleWheel
标志,你会根据您是否希望滚动区域来处理滚轮事件设定从图像构件一个布尔值。
在代码中的某处,您将安装图像小部件作为scrollarea的事件过滤器。
scrollArea->installEventFilter(imageWidget);
如果这不起作用,你可以随时使用这个过滤器,确保你的widget获取事件,并直接处理它,然后返回true,这样滚动区域将无法接收事件。
有两个问题。你的意思是QScrollArea而不是QScrollBar?你是否想要滚动条响应滚轮? – 2010-09-16 05:14:16
对不起,是的,它的QScrollArea。是的,实际上我想使用滚动条来移动可见区域。 – 2010-09-16 05:16:17