選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #include "pane.h"
  2. #include <QListView>
  3. #include <QVBoxLayout>
  4. #include <QFileSystemModel>
  5. #include <iostream>
  6. namespace hex {
  7. Pane::Pane(QWidget* parent) :
  8. QWidget(parent)
  9. {
  10. auto layout = new QVBoxLayout;
  11. mView = new QListView();
  12. mModel = new QFileSystemModel();
  13. mModel->setReadOnly(false);
  14. mView->setModel(mModel);
  15. mView->setSelectionMode(QAbstractItemView::ExtendedSelection);
  16. mView->setDragDropMode(QAbstractItemView::DragDrop);
  17. mModel->setRootPath("/");
  18. setPath("/home/user");
  19. layout->addWidget(mView);
  20. layout->setContentsMargins(0,0,0,0);
  21. this->setLayout(layout);
  22. QObject::connect(mView, &QListView::doubleClicked,
  23. this, &Pane::changeIndex);
  24. }
  25. bool Pane::setPath(const QString& path) {
  26. changeIndex(mModel->index(path));
  27. return true;
  28. }
  29. void Pane::changeIndex(const QModelIndex& index) {
  30. if (mModel->isDir(index)) {
  31. mView->setRootIndex(index);
  32. emit pathChanged(mModel->filePath(index));
  33. emit folderChanged(mModel->fileName(index));
  34. } else {
  35. //open file
  36. }
  37. }
  38. void Pane::moveUp() {
  39. changeIndex(mView->rootIndex().parent());
  40. }
  41. QString Pane::getPath() {
  42. return mModel->filePath(mView->rootIndex());
  43. }
  44. }
  45. #include "moc_pane.cpp"