2

Meego/Qt/QMLに Picture Zoom In/Out と Picture Scroll を実装しようとしています。

QLabelから継承されたクラス A を作成しました。

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

これで、コントローラー クラス B ができました。このクラスは、QMLからクラス A へのイベントを処理する責任があります。コントローラー クラスでは、次の方法でインスタンス化しました。

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

これはQMLベースのアプリケーションなので、QML からイベントを処理しています。

ズームの場合、私は を使用しPinchAreaました。PinchUpdatedイベントを取得するたびに、それに応じsetGeometryQLabelを設定しています。ズームインとズームアウトをしています。

スクロールの場合、イベントで使用MouseAreaonPositionChangedました。ただし、 QLabelのスクロール API を呼び出した後、ラベル イベントをスクロールできません。

誰かが私がどこで間違っているのか教えてもらえますか?

4

1 に答える 1

1

たとえば、マウスのスクロールを使用してズームしたいとします。

私は得意ではありませんQMLが、確かにクラスでwheel イベントAを処理する必要があります。すべての Qt イベントに同等の QML があるかどうかは明確ではありませんが、いつでも C++ コードを配置できます。実装する関数は次のとおりです。

 virtual void wheelEvent ( QWheelEvent * event );

ズームの速度 (デルタ絶対値を使用) と、拡大するか縮小するか (デルタの符号を使用) を決定するのに役立つdelta変数があります。

于 2012-10-30T08:29:10.203 に答える