//Qt|Qt拖拽的小Demo
效果图:
文章图片
思路如下:
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 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显示。
【//Qt|Qt拖拽的小Demo】……
推荐阅读
- 热闹中的孤独
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- 放屁有这三个特征的,请注意啦!这说明你的身体毒素太多
- 一个人的旅行,三亚
- 布丽吉特,人生绝对的赢家
- 慢慢的美丽
- 尽力
- 一个小故事,我的思考。
- 家乡的那条小河
- 《真与假的困惑》???|《真与假的困惑》??? ——致良知是一种伟大的力量