1

現在、QWebViewを含むQWidgetがあります。コンテナQWidgetは半透明でフレームレスです。QWidgetの外側をクリックしてドラッグすることで、フレームのないウィンドウをドラッグできるようになりましたが、QWebViewで何かをクリックしてもドラッグできません。

私の目標は、「ドラッグハンドル」のクラスまたはIDを使用してQWebViewのDOMに要素を作成できるようにすることです。次に、アプリケーション内から「drag-handle」という要素を見つけて、それをドラッグイベントにバインドし、それを使用してQWidgetコンテナ全体をドラッグできるようにします。

これが理にかなっていることを願っています。それでうまくいくと思われる場合は、ドキュメントやサンプル資料の方向に私を向けてください。誰かが自分でそれを理解しようとすると嬉しいです。私を正しい方向に向けることができます。

4

1 に答える 1

0

私の意見では、ドラッグイベントではなく、マウスイベントを使用する必要があります。QWebVewクラスを拡張し、マウスハンドラーイベントをオーバーライドして、次のことを行う必要があります。

  • 「ドラッグハンドル」オブジェクト上でのマウスプレスイベントが処理される場合、Qt::ClosedHandCursorカーソルを設定できます。
  • マウス移動イベントが処理された後、マウス移動オフセットを計算し、計算されたオフセットでメインウィンドウをそれぞれ移動する必要があります。このようなもの:

QPointオフセット=previousPos– event-> pos(); mainWindow-> move(mainWindow-> pos()+オフセット);

  • マウスリリースイベントが処理されるときに、マウスカーソルをリセットできます。

この機能の実装には、QStateMachineを使用できます。

于 2012-11-08T23:43:10.720 に答える