1
+ #include < QMimeData>
2
+
1
3
#include " widget.h"
4
+ #include " qmimedata.h"
2
5
#include " ui_widget.h"
3
6
4
7
Widget::Widget (QWidget *parent)
@@ -15,6 +18,7 @@ Widget::Widget(QWidget *parent)
15
18
isFirstRun_ = true ;
16
19
17
20
// this->setStyleSheet("QToolTip { color: #ffffff; background-color: #666666; border: 1px solid white; }");
21
+ setAcceptDrops (true );
18
22
}
19
23
20
24
void Widget::fileTableInit ()
@@ -197,33 +201,18 @@ void Widget::on_addFileButton_clicked()
197
201
198
202
for (int i = 0 ; i < files.size (); i++)
199
203
{
200
- if (!files[i].isEmpty ()) {
201
- auto result = observedFiles_.insert (files[i]);
202
- if (result.second )
203
- {
204
- int row = ui->fileTableWidget ->rowCount ();
205
- qDebug () << " Selected file:" << files[i] << " , insert to row " << row;
206
- ui->fileTableWidget ->insertRow (row);
207
-
208
- ui->fileTableWidget ->setItem (row, 0 , new QTableWidgetItem (files[i]));
209
- QString newName = getNewName (files[i], row);
210
- ui->fileTableWidget ->setItem (row, 1 , new QTableWidgetItem (newName));
211
- ui->fileTableWidget ->setItem (row, 2 , new QTableWidgetItem (" 还未执行" ));
212
-
213
- // ui->fileTableWidget->setItem(row, column, item);
214
- }
215
- else
216
- {
217
- qDebug () << " Selected file:" << files[i] << " already exists, do nothing" ;
218
- }
204
+ if (!files[i].isEmpty ())
205
+ {
206
+ insertToFileTable (files[i]);
219
207
}
220
208
}
221
209
}
222
210
223
211
224
212
void Widget::on_renameButton_clicked ()
225
213
{
226
- for (int row = 0 ; row < ui->fileTableWidget ->rowCount (); ++row) {
214
+ for (int row = 0 ; row < ui->fileTableWidget ->rowCount (); ++row)
215
+ {
227
216
// 重命名
228
217
QTableWidgetItem *sourceItem = ui->fileTableWidget ->item (row, 0 );
229
218
QTableWidgetItem *destItem = ui->fileTableWidget ->item (row, 1 );
@@ -247,7 +236,8 @@ void Widget::on_renameButton_clicked()
247
236
248
237
void Widget::refreshData ()
249
238
{
250
- for (int row = 0 ; row < ui->fileTableWidget ->rowCount (); ++row) {
239
+ for (int row = 0 ; row < ui->fileTableWidget ->rowCount (); ++row)
240
+ {
251
241
// 重命名
252
242
QTableWidgetItem *sourceItem = ui->fileTableWidget ->item (row, 0 );
253
243
QTableWidgetItem *destItem = ui->fileTableWidget ->item (row, 1 );
@@ -402,3 +392,42 @@ void Widget::on_rmFileButton_clicked()
402
392
}
403
393
}
404
394
395
+ void Widget::dragEnterEvent (QDragEnterEvent *event){
396
+ if (event->mimeData ()->hasUrls ()) {
397
+ event->acceptProposedAction (); // 接受拖放事件
398
+ }
399
+ }
400
+
401
+ void Widget::dropEvent (QDropEvent *event){
402
+ const QMimeData *mimeData = event->mimeData ();
403
+ if (mimeData->hasUrls ())
404
+ {
405
+ QList<QUrl> urlList = mimeData->urls ();
406
+ for (const QUrl &url : urlList)
407
+ {
408
+ QString filePath = url.toLocalFile (); // 获取文件路径
409
+ insertToFileTable (filePath);
410
+ }
411
+ event->acceptProposedAction ();
412
+ }
413
+ }
414
+
415
+ void Widget::insertToFileTable (QString& filePath)
416
+ {
417
+ auto result = observedFiles_.insert (filePath);
418
+ if (result.second )
419
+ {
420
+ int row = ui->fileTableWidget ->rowCount ();
421
+ qDebug () << " insert file:" << filePath << " , insert to row " << row;
422
+ ui->fileTableWidget ->insertRow (row);
423
+
424
+ ui->fileTableWidget ->setItem (row, 0 , new QTableWidgetItem (filePath));
425
+ QString newName = getNewName (filePath, row);
426
+ ui->fileTableWidget ->setItem (row, 1 , new QTableWidgetItem (newName));
427
+ ui->fileTableWidget ->setItem (row, 2 , new QTableWidgetItem (" 还未执行" ));
428
+ }
429
+ else
430
+ {
431
+ qDebug () << " insert file:" << filePath << " already exists, do nothing" ;
432
+ }
433
+ }
0 commit comments