• 4959阅读
  • 2回复

[原创]拖放外部内容到Qt程序中的某个部件中 [复制链接]

上一主题 下一主题
离线XChinux
 

只看楼主 倒序阅读 楼主  发表于: 2011-06-12
关键词: QStringQStringList

2009-09-18  01:15
拖放外部内容到Qt程序中的某个部件中,关键是实现这个部件的三个事件虚函数(前提是设置这个部件的acceptDrops属性为true),下面以拖放外部文件到一个部件上为例说明:
void Widget::dropEvent(QDropEvent *e)
{
if (e->mimeData()->hasUrls())
{
QList<QUrl> urls = e->mimeData()->urls();
QStringList slUrls;
for (int i = 0; i < urls.size(); i++)
{
slUrls << urls.toLocalFile();
}
//e->acceptProposedAction();
e->accept();
// 这里可以开始做其它事情了,已经将文件名放到slUrls变量中了
}
else
{
QWidget::dropEvent(e);
}
}

void Widget::dragMoveEvent(QDragMoveEvent *e)
{
if (e->mimeData()->hasUrls())
{
//e->acceptProposedAction();
e->accept();
}
else
{
QWidget::dragMoveEvent(e);
}
}

void Widget::dragEnterEvent(QDragEnterEvent *e)
{
if (e->mimeData()->hasUrls())
{
//e->acceptProposedAction();
e->accept();
}
else
{
QWidget::dragEnterEvent(e);
}
}
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线redheli
只看该作者 1楼 发表于: 2011-06-13
能不能讲解一些 Mimedata的使用

我觉得drag,drop就是把数据,比如文件名存在mimedata中,是不是。

马上要用到,还没研究,瞎问几句
离线XChinux

只看该作者 2楼 发表于: 2011-06-13
可以这理解。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
快速回复
限100 字节
 
上一个 下一个