如何在wxWidgets的同一窗口中拖放文件和文本
How to drag/drop both file and text in same window in wxWidgets?
我正在开发一个程序,该程序需要从本地磁盘和互联网上打开图像。WxWidgets提供了wxFileDropTarget
和wxTextDropTarget
,但每个类只能支持一种类型的数据对象(wxFileDataObject
和wxTextDataObject
)。我尝试从两个基类派生类,但编译器显示ambiguous conversions from 'CMyDropTarget *' to 'wxDropTarget *'
。如何创建一个接受两种数据类型的窗口?
据我所知,最简单的解决方案是使用wxDataObjectComposite
,其中Add()
既是wxFileDataObject
也是wxTextDataObject
。
您从wxDropTarget
派生自己的类,覆盖其纯虚拟OnData()
,并在派生类的构造函数中使用适当构造的wxDataObjectComposite
调用其SetDataObject()
。
在wxDataObjectComposite
的文档中有一个很好的例子。它为您提供了需要做什么的概述,请记住,有一些细节我认为不太正确:
- 对
wxDropTarget::OnData()
的调用不起作用,因为这是一个纯粹的虚拟(在我看来,你根本不应该调用它) - 但是,您应该调用
GetData()
,以使用首选数据格式(或其他可用的数据格式)填充wxDataObjectComposite
,并测试其返回值 dataObjects->GetReceivedFormat()
应该是dataobjComp->GetReceivedFormat()
相关文章:
- 在组合框中拖放项目
- wxWidgets 拖放文件事件处理程序初始化问题(无效static_cast)
- 拖放我的MDI被CRichEditView拦截并在CRichEditView::GetDocument中崩溃 - 如何覆
- 在特定区域拖放 | Qt
- Qt - 在QGraphicScene中拖放时如何从项目中获取文本?
- Qt 模型拖放 - 无法保存类型 QJsonValue
- 如何在 2 个应用程序之间实现拖放?
- 在拖放 QML 列表中插入/删除项目使用 cpp 模型查看
- UI具有拖放功能
- 如何使用拖放功能和点击信号函数QT创建标签
- 使用MFC在对话框上拖放文件
- QListWidget通过setItemWidget使用自定义小部件集进行拖放
- 将拖放连接到QListWidget中的函数的最佳方法
- QTextEdit-根据QCursor位置进行条件拖放
- 如果使用Qt::DecorationRole,则在拖放时崩溃
- 拖放C++在拖放之前操作 Outlook 文件
- 处理运行的Windows控制台应用程序中的拖放文件
- 如何在wxWidgets的同一窗口中拖放文件和文本
- 在Windows通用应用程序上拖放文件
- 如何在不占用系统资源的情况下拖放大量文件?