diff --git a/assets/icons/editor/delete.png b/assets/icons/editor/delete.png new file mode 100644 index 0000000..08f2493 Binary files /dev/null and b/assets/icons/editor/delete.png differ diff --git a/editor/mainwindow.cpp b/editor/mainwindow.cpp index 37c7526..3f3af5f 100644 --- a/editor/mainwindow.cpp +++ b/editor/mainwindow.cpp @@ -22,6 +22,7 @@ #include "qevent.h" #include "qnamespace.h" #include "qobject.h" +#include "qtreeview.h" class ExplorerEventFilter : public QObject { @@ -68,6 +69,21 @@ MainWindow::MainWindow(QWidget *parent) ui->explorerView->setAcceptDrops(true); ui->explorerView->setDropIndicatorShown(true); ui->explorerView->installEventFilter(new ExplorerEventFilter(ui->explorerView, &explorerModel)); + ui->explorerView->setContextMenuPolicy(Qt::CustomContextMenu); + + explorerMenu.addAction(ui->actionDelete); + + connect(ui->explorerView, &QTreeView::customContextMenuRequested, this, [&](const QPoint& point) { + QModelIndex index = ui->explorerView->indexAt(point); + explorerMenu.exec(ui->explorerView->viewport()->mapToGlobal(point)); + }); + + connect(ui->actionDelete, &QAction::triggered, this, [&]() { + QModelIndexList selectedIndexes = ui->explorerView->selectionModel()->selectedIndexes(); + for (QModelIndex index : selectedIndexes) { + explorerModel.fromIndex(index)->SetParent(std::nullopt); + } + }); simulationInit(); diff --git a/editor/mainwindow.h b/editor/mainwindow.h index 79695b4..a41d01b 100644 --- a/editor/mainwindow.h +++ b/editor/mainwindow.h @@ -4,6 +4,7 @@ #include "explorermodel.h" #include "qbasictimer.h" #include "qcoreevent.h" +#include "qmenu.h" #include #include @@ -23,6 +24,7 @@ public: private: ExplorerModel explorerModel; + QMenu explorerMenu; Ui::MainWindow *ui; QBasicTimer timer; diff --git a/editor/mainwindow.ui b/editor/mainwindow.ui index 1ec3c87..74fc745 100644 --- a/editor/mainwindow.ui +++ b/editor/mainwindow.ui @@ -61,6 +61,21 @@ + + + + assets/icons/editor/delete.pngassets/icons/editor/delete.png + + + Delete + + + <html><head/><body><p>Deletes a selected object</p></body></html> + + + Del + +