如何滚动QLabel?

时间:2012-10-30 04:04:11

标签: qt qml

我正在尝试在 Meego / Qt / QML 上实现图片放大/缩小和图片滚动。

我写了一个继承自 QLabel 的A类。

A::A( "parent" )
{
  setAlignment();
  setGeometry();
  setScaledContents();
}

现在我有一个Controller类B.这个类负责处理从 QML 到我的A类的事件。在我的控制器类中,我用以下方式实例化。

B :: B()
{
 a = new A();
 proxyWidget = new QGraphicsProxyWidget();
 proxyWidget->setWidget(a); 
}

由于这是一个基于 QML 的应用程序,我正在处理来自QML的事件。

对于缩放,我使用了PinchArea。每当我收到PinchUpdated事件时,我都会相应地设置 QLabel setGeometry。我正在放大并缩小。

对于滚动,我使用了MouseAreaonPositionChanged事件。但是,在调用 QLabel 的滚动API后,我无法滚动标签事件。

有人可以告诉我,我在哪里做错了吗?

1 个答案:

答案 0 :(得分:1)

我假设您想要使用鼠标滚动进行缩放。

我不擅长QML,但您当然应该在班级A处理wheel events。我不清楚每个Qt事件是否都有QML等价物,但你总是可以输入C ++代码。要实现的功能是:

 virtual void wheelEvent ( QWheelEvent * event );

你有delta变量可用于确定缩放速度(使用delta绝对值)以及是否应该增大或缩小(使用delta的符号)