拖动浮动时可以使用不同的鼠标光标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