首页 文章

如何在拖动过程中阻止Qt :: ForbiddenCursor出现?

提问于
浏览
2

我正在 X11Windows 之间使用 Qt 实现拖放界面 . 该接口处理事件,使得用户将拖动的对象放在无法处理掉落的区域上是非法的 .

在这种情况下,Qt::IgnoreAction因此应被视为不正确的潜在行动 . 要将此事实传达给用户,我需要一种方法来阻止Qt::ForbiddenCursor显示当前 Qt::DropActionQt::IgnoreAction .

我可以通过三种方式实现这一目标(按优先顺序排列):

  • 要覆盖QCursor用于拖动 Qt::IgnoreActionQt::ForbiddenCursor 以外的其他内容 .

  • 覆盖用于 Qt::ForbiddenCursor 的位图 . 这很脏,但只要我不必深入研究特定于操作系统的配置,这将是一个可接受的解决方案 .

  • 当拖动离开有效的拖放区域时覆盖Qt的调用(我假设在这种情况下Qt相当于 QDropEvent::setDropAction(Qt::IgnoreAction) ) .

任何人都可以建议如何实现上述任何一项?


Note: 我在调用 QDrag::exec() 之前也试图使用 QApplication::setOverrideCursor() . 这似乎没有任何影响 .

1 回答

  • 0

    检查 QDragEnterEvent 是否来自应用程序本身(在 QApplication 对象上安装事件过滤器) . 如果是,只需接受它,光标就会显示正常 .

相关问题