通过本地url进行图片传输
void Vision::onDrapImage() //自定义的拖拽事件
{
QPixmap pixmap("./test.bmp"); //待拖拽的图片(请自行修改)
QString filename = listView->model()->index(handle, 0).data().toString() + ".jpg"; //保存图片名(请自行修改)
filename = filename.remove(QRegExp("[\\s\\\\/:\\*\\?\\\"<>\\|]")); //去除windows路径不支持的符号
filename = QCoreApplication::applicationDirPath() + "/" + filename; //绝对路径
if (filename.isEmpty())return;
QMimeData *mimeData = new QMimeData;
pixmap.save(filename);//将图片临时存储到程序目录下
QUrl url;
url.setUrl("file:///" + filename);//本地文件url
mimeData->setUrls(QList<QUrl>() << url);
QDrag* drag = new QDrag(this);//拖拽控件
drag->setMimeData(mimeData);//加载数据
drag->setPixmap(pixmap.scaled(64, 64));//拖拽时的图标设置
drag->exec(Qt::MoveAction | Qt::CopyAction | Qt::LinkAction, Qt::CopyAction);//运行拖拽事件直至事件结束,设置拖拽支持动作
//类的QTimer定时器
timer->setObjectName(filename); //载入文件名
QObject::connect(timer, &QTimer::timeout, this, &Vision::onRemoveTemporary);//连接定时槽
timer->setInterval(1000);//设置1s时间
timer->start();//开始计时
}
void Vision::onRemoveTemporary() //槽函数
{
QFile::remove(timer->objectName());//删除临时图像文件
QObject::disconnect(timer, &QTimer::timeout, 0, 0);//断开信号和槽
timer->setObjectName("");//重置
}