拖動浮動時可以使用不同的鼠標光標QDockWidget
? QWidget::setCursor
和QApplication::setOverrideCursor
都沒有任何影響。當拖動浮動時更改鼠標光標QDockWidget
0
A
回答
0
浮動QDockWidget
是一個窗口,因此您需要讓操作系統在非客戶端區域更改光標。
一個用於Windows的小馬車例如:
#define WINVER 0x0500
#include <windows.h>
#include <windowsx.h>
#include <winuser.h>
bool DockWidget::winEvent(MSG * message, long * result)
{
switch(message->message)
{
case WM_NCMOUSEMOVE:
if(message->wParam == HTCAPTION)
{
qDebug() << "WM_NCMOUSEMOVE";
if(!cursorHasBeenChanged && !cursorHasBeenClosed)
{
cursorHasBeenChanged = true;
QApplication::setOverrideCursor(Qt::OpenHandCursor);
}
}
else
if(cursorHasBeenChanged)
{
cursorHasBeenChanged = false;
QApplication::restoreOverrideCursor();
}
break;
case WM_NCMOUSELEAVE:
qDebug() << "WM_NCMOUSELEAVE";
if(cursorHasBeenChanged && !cursorHasBeenClosed)
{
cursorHasBeenChanged = false;
QApplication::restoreOverrideCursor();
}
break;
case WM_NCLBUTTONDOWN:
if(message->wParam == HTCAPTION)
{
qDebug() << "WM_NCLBUTTONDOWN";
cursorHasBeenClosed = true;
QApplication::setOverrideCursor(Qt::ClosedHandCursor);
}
break;
case WM_NCLBUTTONUP:
qDebug() << "WM_NCLBUTTONUP";
if(cursorHasBeenClosed)
{
cursorHasBeenClosed = false;
QApplication::restoreOverrideCursor();
}
break;
default:
;
}
return QDockWidget::winEvent(message, result);
}
我認爲的代碼是不言自明的,byut不要猶豫,問是否有東西,你不明白。
Buggy的一部分,是我從來沒有收到WM_NCLBUTTONUP消息,我不知道爲什麼(我得到WM_NCMOUSEMOVE而不是)WM_NCMOUSEHOVER(這是非客戶區「輸入事件」)。
+0
我希望有一個平臺不可知的解決方案,但似乎沒有。你從來沒有得到WM_NLCBUTTONUP的原因是我之前遇到的,並且發現它已經被記錄:https://bugreports.qt-project.org/browse/QTBUG-1358 – 2013-02-21 17:46:39
相關問題
- 1. Qt:拖動時更改鼠標光標
- 2. 鼠標拖動時更改光標
- 3. 拖動時更改光標
- 4. 拖動HTML元素時更改光標
- 5. 在WPF中拖動時更改光標
- 6. 當將GetStockObject(WHITE_BRUSH)更改爲GetStockObject(GREY_BRUSH)時鬆動鼠標光標
- 7. 在WPF中更改鼠標拖動光標
- 8. QDockWidget浮動時更改背景顏色
- 9. 閃光:當鼠標移動
- 10. 當鼠標移動時,類更改
- 11. Mediaelement JS - 當鼠標不移動時隱藏鼠標光標
- 12. 更改光標選擇/拖動div內?
- 13. 更改鼠標光標的HTML5拖放文件(GMail拖放)
- 14. GWT 2.4 HTML 5拖放APIS - 拖動時更改光標
- 15. 如何在鼠標移動前動態更改光標樣式時更改光標
- 16. 改變鼠標移動光標類型
- 17. 如何在IE中拖動時動態更改光標?
- 18. 當我拖動鼠標時,鼠標返回到原位
- 19. 圖形32:用鼠標拖動,用鼠標滾輪縮放到鼠標光標
- 20. 拖動鼠標時將光標移到HTML5畫布上
- 21. Intellij IdeaVim:使用鼠標右鍵拖動上下移動光標
- 22. 鼠標移動-crosshair光標
- 23. 移動鼠標光標Javascript
- 24. SWTBot拖動鼠標
- 25. 保持鼠標光標在手柄上,當鼠標移動
- 26. 如何在鼠標左鍵關閉時更改鼠標光標?
- 27. 僅當特定元素超過鼠標光標時才更改
- 28. 當鼠標懸停在TreeNode上時,如何更改光標?
- 29. 顯示被鼠標光標拖動的圖標嗎?
- 30. Telerik RadEditor在拖動時移動光標
你願意修改Qt本身嗎?你可以將這個QDockWidget特性貢獻給Qt 5.1。 – peppe 2013-02-18 10:58:46
@peppe這是一個有趣的想法。我會在某個時候研究它,如果可行的話,我可能會這樣做,但這對我現在正在開展的項目無能爲力。 – 2013-02-18 12:54:13
如果在主窗口上設置了光標,會發生什麼情況?它應該從其父部件獲取光標。 – paulm 2013-02-23 00:20:33