#include <QApplication>\r
#include <QSettings>\r
#include <QMenuBar>\r
+#include <QMimeData>\r
+#include <QUrl>\r
+#include <QMessageBox>\r
#ifdef Q_OS_WIN32\r
#include <windows.h>\r
#endif\r
Qt::ItemFlags FileTableModel::flags(const QModelIndex &index) const\r
{\r
Qt::ItemFlags flags = Qt::ItemIsEnabled | Qt::ItemIsSelectable;\r
- if (index.column() == 0 && m_fileInfoList[index.row()].fileName() != "..")\r
- {\r
- flags |= Qt::ItemIsUserCheckable;\r
+ if (!index.isValid()) {\r
+ flags |= Qt::ItemIsDropEnabled;\r
+ }\r
+ else if (m_fileInfoList[index.row()].fileName() != "..") {\r
+ if (index.column() == 0) {\r
+ flags |= Qt::ItemIsUserCheckable;\r
+ }\r
+// TODO\r
+// flags |= Qt::ItemIsDragEnabled;\r
+ flags |= Qt::ItemIsDropEnabled;\r
}\r
return flags;\r
}\r
\r
return false;\r
}\r
+\r
+Qt::DropActions FileTableModel::supportedDropActions() const\r
+{\r
+ return Qt::CopyAction | Qt::MoveAction;\r
+}\r
+\r
+QStringList FileTableModel::mimeTypes() const\r
+{\r
+ QStringList types;\r
+\r
+ types << "text/uri-list";\r
+\r
+ return types;\r
+}\r
+\r
+bool FileTableModel::dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent)\r
+{\r
+ Q_UNUSED(parent);\r
+\r
+ qDebug() << action << row << column;\r
+\r
+ if (action == Qt::IgnoreAction)\r
+ return true;\r
+\r
+ if (!data->hasFormat("text/uri-list"))\r
+ return false;\r
+\r
+ if (column > 0)\r
+ return false;\r
+\r
+ QString msg;\r
+ msg = "ドロップを検知しました。<br/>";\r
+ foreach (const QUrl &url, data->urls()) {\r
+ msg += url.toLocalFile() + "<br/>";\r
+ qDebug() << url.toLocalFile();\r
+ }\r
+ QMessageBox::information(NULL, "info", msg);\r
+\r
+ return true;\r
+}\r
QVariant headerData(int section, Qt::Orientation orientation, int role) const;\r
Qt::ItemFlags flags(const QModelIndex &index) const;\r
bool setData(const QModelIndex &index, const QVariant &value, int role);\r
+ Qt::DropActions supportedDropActions() const;\r
+ QStringList mimeTypes() const;\r
+ bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent);\r
};\r
\r
+\r
+\r
#endif // FILETABLEMODEL_H\r
\r
connect(this, SIGNAL(doubleClicked(QModelIndex)),\r
this, SLOT(setRootIndex(QModelIndex)));\r
+\r
+ // Drag & Drop\r
+ setDragEnabled(true);\r
+ setAcceptDrops(true);\r
+ setDropIndicatorShown(true);\r
+// setDragDropMode(QAbstractItemView::DragDrop);\r
}\r
\r
FileTableView::~FileTableView()\r
\r
QTableView::currentChanged(current, previous);\r
}\r
+\r
+\r
+//void FileTableView::dropEvent(QDropEvent *event)\r
+//{\r
+// foreach (const QString &str, event->mimeData()->formats()) {\r
+// qDebug() << str;\r
+// }\r
+//}\r
+\r
+//void FileTableView::dragEnterEvent(QDragEnterEvent *event)\r
+//{\r
+// event->acceptProposedAction();\r
+//}\r
protected:\r
void keyPressEvent(QKeyEvent *event);\r
void focusInEvent(QFocusEvent *event);\r
+// void dropEvent(QDropEvent *event);\r
+// void dragEnterEvent(QDragEnterEvent *event);\r
\r
// QAbstractItemView interface\r
protected slots:\r
header->setSectionResizeMode(2, QHeaderView::ResizeToContents);\r
header->setSectionResizeMode(3, QHeaderView::ResizeToContents);\r
header->setDefaultSectionSize(header->minimumSectionSize());\r
-\r
+ // 行の高さを75%に調整\r
QHeaderView *vHeader = ui->fileTable->verticalHeader();\r
vHeader->setDefaultSectionSize(vHeader->defaultSectionSize() * 0.75);\r
}\r