qt拖拽控件到本地 怎么获取拖拽目标源的本地路径

0.2°250 2024-07-23 11:51:24

求大佬教教怎么解决这个问题

...全文
189 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复

重写拖入事件:
virtual void dragEnterEvent(QDragEnterEvent *event);
virtual void dropEvent(QDropEvent *event);


cpp:
void MainScreen::dragEnterEvent(QDragEnterEvent *event)      //拖入可接受jpg、png、bmp格式文件
{
if(!event->mimeData()->urls()[0].fileName().right(3).compare("jpg")
||!event->mimeData()->urls()[0].fileName().right(3).compare("png")
||!event->mimeData()->urls()[0].fileName().right(3).compare("bmp"))
    event->acceptProposedAction();
else
    event->ignore();
}

void MainScreen::dropEvent(QDropEvent *event)
{
const QMimeData *qm=event->mimeData();         //获取拖入文件的完整文件名(含路径)
pixmap.load(qm->urls()[0].toLocalFile());
DScreen->showimage(Fwidth,Fheight,pixmap);
fileName.clear();
fileName.append(qm->urls()[0].toLocalFile());
qDebug()<<fileName;
int picw=pixmap.width();
int pich=pixmap.height();
float rate=float(picw)/float(pich);
qDebug()<<rate;
if(rate>(float(8)/float(6)))
{
pich=800/rate;
pixmap=pixmap.scaled(800,pich,Qt::IgnoreAspectRatio,Qt::SmoothTransformation);
qDebug()<<"800*"<<pich;
}
else
{
picw=600*rate;
pixmap=pixmap.scaled(picw,600,Qt::IgnoreAspectRatio,Qt::SmoothTransformation);
qDebug()<<pich<<"*600";
}
update();
}

16,759

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧