如何在執行拖動操作時設置Qt中使用的光標?我正在使用QDrag
類。功能setCursor
需要一個像素圖,無法指定熱點,文檔也沒有指定它可以覆蓋「無操作」光標。Qt設置自定義拖動光標?
我很高興如果我可以在mouseMoveEvent
中做一個明確的光標,但我不知道如何在拖動操作。
如何在執行拖動操作時設置Qt中使用的光標?我正在使用QDrag
類。功能setCursor
需要一個像素圖,無法指定熱點,文檔也沒有指定它可以覆蓋「無操作」光標。Qt設置自定義拖動光標?
我很高興如果我可以在mouseMoveEvent
中做一個明確的光標,但我不知道如何在拖動操作。
檢查它的源代碼Qt在這方面是蹩腳的,並沒有機制來做到這一點。對於X11代碼,函數QDragManager::updateCursor
包含它使用的遊標的變量。這些是使用具有恆定熱點值(0,0)的QCursor
構造函數創建的。 ForbiddenCursor
是完全硬編碼的,因此可以防止任何變化。
要設置光標,請調用QApplication::changeOverrideCursor
。作爲靜態函數,無法攔截該呼叫。
即使設置了pixmaps(通過setCursor),初始拖動光標仍然是默認值。這似乎是QT中的一個缺陷。 這是在qdnd_x11.cpp:1948
,指針光標強制設定在拖動
的開始。因此存在使用自定義光標爲標準拖歐米茄下降沒有實際的辦法。
我填補這個話題的bug報告,也許有人走了一步了這個問題...
http://doc.trolltech.com/4.7/qdrag.html但接口非常看起來你可以做到這一點。 setHotSpot和setDragCursor? – 2011-03-28 15:24:32
你正在使用哪個Qt版本? – 2011-03-28 15:25:35
我正在使用4.6,但它有相同的接口。該熱點與遊標函數無關,它爲setPixmap中的像素圖所在的位置設置偏移量。我在bug數據庫中查找了這個問題,實際上有很多相關的問題。 – 2011-03-28 16:42:10