从任何浏览器拖动并放入Qt app-设置自定义mime类型数据

从任何浏览器拖动并放入Qt app-设置自定义mime类型数据,qt,drag-and-drop,mime-types,Qt,Drag And Drop,Mime Types,基本上,当我使用javascript从浏览器拖动图像时,我正在设置自定义mime类型数据。比如说,mime类型是text/x-my,它的数据=my-data 但当我尝试在Qt中读取它时(当您将图像从浏览器放到Qt窗口时),我在Qt中没有得到自定义mime类型text/x-my。但是有文档记录“您可以在Qt中存储自定义mime类型数据”,请参见QMimeDataDoc. 现在,有趣的是,在Qt代码中,您可以设置和获取自定义mime数据,但Qt并没有从javascript读取自定义mime数据集 Q

基本上,当我使用javascript从浏览器拖动图像时,我正在设置自定义mime类型数据。比如说,mime类型是
text/x-my
,它的数据=
my-data

但当我尝试在Qt中读取它时(当您将图像从浏览器放到Qt窗口时),我在Qt中没有得到自定义mime类型
text/x-my
。但是有文档记录“您可以在Qt中存储自定义mime类型数据”,请参见
QMimeData
Doc.
现在,有趣的是,在Qt代码中,您可以设置和获取自定义mime数据,但Qt并没有从javascript读取自定义mime数据集

QString str = "my data";
QMimeData *mimeData = new QMimeData;
mimeData->setData("text/x-my", str.toAscii());

QByteArray data = mimeData->data("text/x-my");
QString myString(data);
上面的Qt代码工作得很好。有人知道为什么Qt不从javascript读取自定义mime类型集吗


谢谢

我假设您已经从Enter/Move/Drop事件()中检索到了
mimeData
。从这里开始,最好的第一步是看看你的mimeData是什么格式的:尝试
qDebug
ing…Yes.的内容。。但在调试中,我无法在从javascript设置的mime数据中看到格式“text/x-my”。(我使用的是4.8.2。)拖放事件可以包含多种格式的mime数据,因此
QMimeData::data(…)
要求您提供mime格式以检索数据。由于无法检索任何数据,因此首先要检查拖放事件是否包含任何格式的数据。你是说
foreach(QString格式,event->mimeData()->->formats())qDebug()更多关于这个(我使用的是4.8.2。)使用fiddle并从Qt\4.8.2\examples\draganddop和check运行“dropsite”示例。您将无法看到“文本/x示例”。