• 6190阅读
  • 2回复

[提问]拖拽例子遇到的问题 [复制链接]

上一主题 下一主题
离线yzpdsg
 

只看楼主 正序阅读 楼主  发表于: 2011-06-24
  1. 例子是从网上找的。

  2. void MainWindow::dragEnterEvent(QDragEnterEvent *event)  
  3. {  
  4.     if (event->mimeData()->hasFormat(“text/uri-list”)) {  
  5.         event->acceptProposedAction();  
  6.     }  
  7. }  
  8. void MainWindow::dropEvent(QDropEvent *event)  
  9. {  
  10.     QList<QUrl> urls = event->mimeData()->urls();  
  11.     if (urls.isEmpty()) {  
  12.         return;  
  13.     }  
  14.     QString fileName = urls.first().toLocalFile();  
  15.     if (fileName.isEmpty()) {  
  16.         return;  
  17.     }  
  18.     if (readFile(fileName)) {  
  19.         setWindowTitle(tr(“%1 - %2″).arg(fileName, tr(“Drag File”)));  
  20.     }  
  21. }  
经试验可以正常运行。可是如果想拖放其他格式的文件,比如ogg文件,该怎么做呢?

参考mime文档,ogg对应的是audio/ogg,将dragEnterEvent()改成下面的形式:

  1. void MainWindow::dragEnterEvent(QDragEnterEvent *event)  
  2. {  
  3.     if (event->mimeData()->hasFormat(“audio/ogg”)) {  
  4.         event->acceptProposedAction();  
  5.     }  
  6. }  
在拖文件进去后却出现了禁止符号。这是为什么呢?
离线yzpdsg

只看该作者 2楼 发表于: 2011-06-24
回 1楼(zhy282289) 的帖子
  if (event->mimeData()->hasFormat(“text/uri-list”))


竟然是ur爱有木有!!!我一直以为是url,坑惨我了。。。

谢谢,以基本解决。
离线zhy282289
只看该作者 1楼 发表于: 2011-06-24
拖拽有两个类型,在控件外面,控件里面
在控件外面拖进来只有几种类开:text,url,image,等等,
在控件里面当然也可以用上面的,但他还支持自定义的格式,format,触发拖拽的时候定义,放下的时候解释,
根据你的情况是从外面拖进来的,,,所有文件类型进来都是URLS类型,你再自己判断是不是你要的文件就行了.
如:
void MainWindow::dropEvent(QDropEvent *event)  
{  
    QList<QUrl> urls = event->mimeData()->urls();  
    if (urls.isEmpty()) {  
        return;  
    }  
    QString fileName = urls.first().toLocalFile();  
    if (fileName.isEmpty()) {  
        return;  
    }  
   if(fileName的后缀是OGG)
{
    if (readFile(fileName)) {  
        setWindowTitle(tr(“%1 - %2″).arg(fileName, tr(“Drag File”)));  
    }  
}  
}
为什么我脸这么胖~
快速回复
限100 字节
 
上一个 下一个