1

我想创建一个带有自定义标题小部件的停靠小部件。该自定义标题小部件有我自己的图标(最大化、最小化、关闭等)。

源代码就是这样:

  QDockWidget *dock = new QDockWidget("name", parent);
  MyDockTitle * titleWidget = new MyDockTitle(dock);
  dock->setTitleBarWidget(titleWidget);

当我运行程序时,停靠小部件会正确显示,但不幸的是我无法移动停靠小部件(它处于浮动状态)。可能是什么问题?

PS 当我不使用自定义标题小部件时,我可以移动停靠小部件。

谢谢...

4

1 回答 1

3

setTitleBarWidget()的Qt 文档说:

标题栏小部件未明确处理的鼠标事件必须通过调用 QMouseEvent::ignore() 来忽略。然后这些事件传播到 QDockWidget 父级,它以通常的方式处理它们,在拖动标题栏时移动,在双击时停靠和取消停靠等。

所以我想你需要在你的MyDockTitle类中添加一些 QMouseEvent::ignore() 调用。

于 2010-09-06T14:55:29.560 回答