Qt4是不是实现了窗口图标的拖放?

Posted

技术标签:

【中文标题】Qt4是不是实现了窗口图标的拖放?【英文标题】:Does Qt4 implement drag and drop with window icons?Qt4是否实现了窗口图标的拖放? 【发布时间】:2012-11-06 20:22:52 【问题描述】:

OS X 中的一些窗口具有可拖放的窗口图标(例如终端、Keynote、Finder)。 Qt4窗口图标可以设置拖放吗?我不知道点击窗口图标是否会触发任何事件。

【问题讨论】:

【参考方案1】:

由于此功能仅适用于一个平台,因此它可能无法在 Qt 中直接使用。可能您将不得不使用 Cocoa API 来处理此类事件。您可以获得本机窗口句柄:

WId QWidget::winId () const 返回窗口系统标识符 小部件。

原则上是便携的,但如果你使用它,你可能会做 非便携的东西。小心点。

如果小部件是非本地的(外来的)并且在其上调用了 winId(),则 小部件将被提供一个本机句柄。

在 Mac OS X 上,返回的类型取决于 Qt 是哪个框架 链接反对。如果 Qt 使用的是 Carbon,WId 实际上是一个 HIViewRef。如果 Qt 使用 Cocoa,WId 是一个指向 NSView 的指针。

有了这样的句柄,您可能可以使用本机(不可移植!)Mac OS X 代码处理“窗口图标拖动”

【讨论】:

以上是关于Qt4是不是实现了窗口图标的拖放?的主要内容,如果未能解决你的问题,请参考以下文章

不带“file://”的拖放 URL

C++ GUI 中的拖放事件 (WM_DROPFILES)

WPF中的拖放文件不起作用

上传文件时检测到取消的拖放操作

为啥 Qt 中的拖放停止工作?

HTML:是不是可以在拖放文件后创建弹出窗口以进行上传?