Qt的实现
Qt的拖拽文件进入窗口识别文件名,一般可以用一下Qt的事件实现:
this->setAcceptDrops(true); //控件或者窗口
virtual void dragEnterEvent(QDragEnterEvent* e) override;
virtual void dropEvent(QDropEvent* e) override;
virtual void dragMoveEvent(QDragMoveEvent* e) override;
//dragMoveEvent可以不用重写
void MainWidget::dragEnterEvent(QDragEnterEvent* e)
{
if (true) //鉴别是不是需要接收
{
e->acceptProposedAction();
}
}
void MainWidget::dropEvent(QDropEvent* e)
{
m_pathlist.clear();
QList<QUrl> urls = e->mimeData()->urls();
if (urls.isEmpty())
return;
int nsize = urls.size();
for(QUrl u : urls)
{

在管理员权限下,Qt程序默认无法处理拖拽文件事件,因为权限隔离导致WM_DROPFILES消息被阻止。通过VC的方式,使用ChangeWindowMessageFilter API放行相关消息可以解决此问题,但直接在Qt中应用VC方法无效。
最低0.47元/天 解锁文章
1363

被折叠的 条评论
为什么被折叠?



