modify mouse right menu

This commit is contained in:
brige 2025-06-18 23:33:06 +08:00
parent a3fc986d4e
commit 286a48a658
5 changed files with 55 additions and 34 deletions

View File

@ -636,57 +636,57 @@
<context>
<name>ModelTreeWidget</name>
<message>
<location filename="../ui/ModelBrowser/ModelTreeWidget.cpp" line="97"/>
<location filename="../ui/ModelBrowser/ModelTreeWidget.cpp" line="252"/>
<source>Release Track</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui/ModelBrowser/ModelTreeWidget.cpp" line="113"/>
<location filename="../ui/ModelBrowser/ModelTreeWidget.cpp" line="107"/>
<source>Add boke Entity</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui/ModelBrowser/ModelTreeWidget.cpp" line="120"/>
<location filename="../ui/ModelBrowser/ModelTreeWidget.cpp" line="114"/>
<source>Add lsjhqt Entity</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui/ModelBrowser/ModelTreeWidget.cpp" line="127"/>
<location filename="../ui/ModelBrowser/ModelTreeWidget.cpp" line="121"/>
<source>Add nimizi Entity</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui/ModelBrowser/ModelTreeWidget.cpp" line="134"/>
<location filename="../ui/ModelBrowser/ModelTreeWidget.cpp" line="128"/>
<source>Add tkdlj Entity</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui/ModelBrowser/ModelTreeWidget.cpp" line="141"/>
<location filename="../ui/ModelBrowser/ModelTreeWidget.cpp" line="135"/>
<source>Add jiaofan Entity</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui/ModelBrowser/ModelTreeWidget.cpp" line="148"/>
<location filename="../ui/ModelBrowser/ModelTreeWidget.cpp" line="142"/>
<source>Add satellite Entity</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui/ModelBrowser/ModelTreeWidget.cpp" line="250"/>
<location filename="../ui/ModelBrowser/ModelTreeWidget.cpp" line="260"/>
<source>Track</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui/ModelBrowser/ModelTreeWidget.cpp" line="257"/>
<location filename="../ui/ModelBrowser/ModelTreeWidget.cpp" line="268"/>
<source>Add Mesh Component</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui/ModelBrowser/ModelTreeWidget.cpp" line="260"/>
<location filename="../ui/ModelBrowser/ModelTreeWidget.cpp" line="271"/>
<source>Add Path Component</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ui/ModelBrowser/ModelTreeWidget.cpp" line="267"/>
<location filename="../ui/ModelBrowser/ModelTreeWidget.cpp" line="278"/>
<source>Delete</source>
<translation type="unfinished"></translation>
</message>
@ -694,12 +694,12 @@
<context>
<name>OsgWidget</name>
<message>
<location filename="../viewer/OsgWidget.cpp" line="81"/>
<location filename="../viewer/OsgWidget.cpp" line="86"/>
<source>warning</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../viewer/OsgWidget.cpp" line="82"/>
<location filename="../viewer/OsgWidget.cpp" line="87"/>
<source>open dyt file failed</source>
<translation type="unfinished"></translation>
</message>

View File

@ -93,18 +93,12 @@ void ModelTreeWidget::OnEntityRemoved(Entity* entity) {
void ModelTreeWidget::contextMenuEvent(QContextMenuEvent* event) {
QTreeWidgetItem* item = itemAt(event->pos());
if (nullptr != item) {
QMenu menu(this);
QAction* addEntiy = new QAction(tr("Release Track"), this);
connect(addEntiy, &QAction::triggered, [this]() {
OnTrackEntity(nullptr);
}
);
menu.addAction(addEntiy);
menu.exec(event->globalPos());
return;
}
QVariant value = item->data(0, E_Entity);
if (nullptr != item && value.isValid()) {
QVariant value = item->data(0, E_Entity);
if (!value.isValid()) {
LOG_WARN("unknown data E_Entity");
return;
}
Entity* entity = value.value<Entity*>();
PopupEntityMenu(event, entity);
} else {
@ -247,14 +241,31 @@ void ModelTreeWidget::OnDeleteEntity(Entity* entity) {
void ModelTreeWidget::PopupEntityMenu(QContextMenuEvent* event, Entity* entity) {
QMenu menu(this);
QAction* addEntiy = new QAction(tr("Track"), this);
menu.addAction(addEntiy);
connect(addEntiy, &QAction::triggered, [this, entity]() {
OnTrackEntity(entity);
if (nullptr != entity) {
auto workspace = entity->GetWorkspace();
if (nullptr == workspace) {
LOG_WARN("workspace is nullptr");
return;
}
);
addEntiy = new QAction(tr("Add Mesh Component"), this);
if (workspace->GetTrackEntity() == entity) {
QAction* releaseTrack = new QAction(tr("Release Track"), this);
connect(releaseTrack, &QAction::triggered, [this]() {
OnTrackEntity(nullptr);
}
);
menu.addAction(releaseTrack);
}
} else {
QAction* addEntiy = new QAction(tr("Track"), this);
menu.addAction(addEntiy);
connect(addEntiy, &QAction::triggered, [this, entity]() {
OnTrackEntity(entity);
}
);
}
QAction* addEntiy = new QAction(tr("Add Mesh Component"), this);
menu.addAction(addEntiy);
addEntiy = new QAction(tr("Add Path Component"), this);
@ -328,11 +339,12 @@ void ModelTreeWidget::OnTrackEntity(Entity* entity) {
}
if (nullptr == entity) {
LOG_WARN("entity is nullptr, clear camera manipulator");
LOG_INFO("clear track entity");
workspace->UntrackEntity();
return;
}
}
LOG_INFO("track entity: {}", entity->GetName().toStdString());
workspace->TrackEntity(entity);
//scene->Track
//MainWindow::

View File

@ -45,6 +45,11 @@ OsgWidget::OsgWidget(QWidget* parent, Qt::WindowFlags f)
connect( &timer_, SIGNAL(timeout()), this, SLOT(update()) );
timer_.start( 10 );
LOG_INFO("OsgWidget::OsgWidget");
}
OsgWidget::~OsgWidget() {
LOG_INFO("OsgWidget::~OsgWidget");
}
void OsgWidget::Initialize() {

View File

@ -10,6 +10,7 @@ class OsgWidget : public QWidget, public osgViewer::CompositeViewer {
Q_OBJECT
public:
OsgWidget(QWidget *parent = nullptr, Qt::WindowFlags f = nullptr);
~OsgWidget() override;
void Initialize(void);
void LoadDefaultScene(void);

View File

@ -118,6 +118,9 @@ public:
void RemoveEntity(class Entity* entity);
bool TrackEntity(class Entity* entity);
void UntrackEntity();
class Entity* GetTrackEntity() const {
return trackedEntity_;
}
bool Save(const QString& path);
bool Save();