Qt设置自定义拖动光标?

时间:2011-03-28 08:57:54

标签: qt cursor

如何在执行拖动操作时设置Qt中使用的光标?我正在使用QDrag课程。函数setCursor采用像素图并且无法指定热点,文档也没有指定它可以覆盖“无动作”光标。

如果我可以在mouseMoveEvent中做一个明确的光标,我很高兴,但我不确定在拖动操作期间如何。

2 个答案:

答案 0 :(得分:4)

检查它出现的源代码Qt在这方面是蹩脚的,并且没有机制来执行此操作。对于X11代码,函数QDragManager::updateCursor变量包含它使用的游标。这些是使用具有常量热点值(0,0)的QCursor构造函数创建的。 ForbiddenCursor完全是硬编码的,因此可以防止任何更改。

要设置光标,它会调用QApplication::changeOverrideCursor。作为静态函数,无法拦截该调用。


即使设置了像素图(通过setCursor),初始拖动光标仍然是默认值。这似乎只是QT的一个缺陷。 这是qdnd_x11.cpp:1948,指针光标在拖动开始时被强制设置

因此,没有实际的方法可以使用自定义游标进行标准的拖放操作。

答案 1 :(得分:1)

我填写了关于此主题的错误报告,也许有人在这个问题上迈出了一步......

Qt Project - Bug Tracker QTBUG-36173