如何在执行拖动操作时设置Qt中使用的光标?我正在使用QDrag
课程。函数setCursor
采用像素图并且无法指定热点,文档也没有指定它可以覆盖“无动作”光标。
如果我可以在mouseMoveEvent
中做一个明确的光标,我很高兴,但我不确定在拖动操作期间如何。
答案 0 :(得分:4)
检查它出现的源代码Qt在这方面是蹩脚的,并且没有机制来执行此操作。对于X11代码,函数QDragManager::updateCursor
变量包含它使用的游标。这些是使用具有常量热点值(0,0)的QCursor
构造函数创建的。 ForbiddenCursor
完全是硬编码的,因此可以防止任何更改。
要设置光标,它会调用QApplication::changeOverrideCursor
。作为静态函数,无法拦截该调用。
即使设置了像素图(通过setCursor),初始拖动光标仍然是默认值。这似乎只是QT的一个缺陷。 这是qdnd_x11.cpp:1948
,指针光标在拖动开始时被强制设置
因此,没有实际的方法可以使用自定义游标进行标准的拖放操作。
答案 1 :(得分:1)
我填写了关于此主题的错误报告,也许有人在这个问题上迈出了一步......