Qt拖拽的小Demo

xiaoxiao2021-02-28  37

效果图:

思路如下:

1、在构造函数中设置拖拽可用,setAcceptDrops(true);

2、在拖的时候获取信息,拽的时候做处理(处理时已去除重复文件):

void MainWindow::dragEnterEvent(QDragEnterEvent *event) { if(event->mimeData()->hasFormat("text/uri-list")) { event->acceptProposedAction(); } qDebug() << "drag enter"; } void MainWindow::dropEvent(QDropEvent *event) { QList<QUrl> urls = event->mimeData()->urls(); if(urls.isEmpty()) { return; } foreach(QUrl url, urls) { QString file_all_name = url.toLocalFile(); if(!m_fileList.contains(file_all_name)) { m_fileList << file_all_name; QString fileName = file_all_name.split("/").last(); int w = 300; int h = 100; QPushButton *btn = new QPushButton(this); btn->resize(w,h); btn->move((1-m_fileList.count()%2)*w, (m_fileList.count() - 1)/2*h + ui->label->height()); btn->setText(fileName); btn->setStyleSheet("background-color: rgb(170, 255, 255);"); connect(btn, &QPushButton::clicked, [=](){ for(int i = 0; i < m_fileList.count(); i++) { QString tmp = m_fileList.at(i); if(tmp.split("/").last() == btn->text()) { ui->label->setText(tmp); } } }); btn->show(); } } }

3、还可以做的小优化:

①、可以在点击按钮时,不是简单的显示路径,而是打开此文件。

②、可以加图片处理,根据不同的文件类型用不同的UI显示。

……

转载请注明原文地址: https://www.6miu.com/read-2300205.html

最新回复(0)