1

我目前有一个包含 QWebView 的 QWidget。容器 QWidget 是半透明且无框的。我已经能够通过单击并拖动 QWidget 的外部来拖动无框窗口,但是当我单击 QWebView 中的任何内容时我无法拖动。

我的目标是能够在 QWebView 的 DOM 中创建一个类或 id 为“拖动句柄”的元素。然后,在应用程序中,我想找到任何名为“drag-handle”的元素并将其绑定到拖动事件,这样我就可以使用它来拖动整个 QWidget 容器。

我希望这是有道理的,如果您认为这对我有用,请随时向我指出一些文档或示例材料的方向,如果有人我很乐意自己尝试解决可以指出我正确的方向。

4

1 回答 1

0

我认为您不应该使用拖动事件,而是使用鼠标事件。您应该扩展 QWebVew 类,覆盖鼠标处理程序事件并:

  • 当您的“拖动手柄”对象上的鼠标按下事件将被处理时,您可以设置 Qt::ClosedHandCursor 光标。
  • 在处理鼠标移动事件后,您应该计算鼠标移动偏移量并分别在计算的偏移量上移动主窗口。像这样的东西:

QPoint offset = previousPos – event->pos(); mainWindow->move(mainWindow->pos() + offset);

  • 当鼠标释放事件将被处理时,您可以重置鼠标光标。

为了实现这个功能,你可以使用 QStateMachine。

于 2012-11-08T23:43:10.720 回答