From 7e8fd4ea211f727a82df915267a2418c0f52a84d Mon Sep 17 00:00:00 2001 From: yyc12345 Date: Mon, 13 Jul 2026 15:47:17 +0800 Subject: [PATCH] refactor: use class member menu instead of runtime created menu --- app/mainwindow.cpp | 93 +++++++++++++++++++++++----------------------- app/mainwindow.h | 2 + 2 files changed, 49 insertions(+), 46 deletions(-) diff --git a/app/mainwindow.cpp b/app/mainwindow.cpp index 46cac7d..30a7cca 100644 --- a/app/mainwindow.cpp +++ b/app/mainwindow.cpp @@ -104,6 +104,52 @@ MainWindow::MainWindow(QWidget *parent) m_am->actionToggleCheckerboard, }, this); + m_menu = new QMenu(this); + + { + m_menu->addAction(m_am->actionCopyPixmap); + m_menu->addAction(m_am->actionCopyFilePath); + + m_menu->addSeparator(); + + m_menu->addAction(m_am->actionPrevPicture); + m_menu->addAction(m_am->actionNextPicture); + + m_menu->addSeparator(); + + m_menu->addAction(m_am->actionActualSize); + m_menu->addAction(m_am->actionFitToScreen); + m_menu->addAction(m_am->actionFitByWidth); + m_menu->addAction(m_am->actionFitByHeight); + m_menu->addAction(m_am->actionZoomIn); + m_menu->addAction(m_am->actionZoomOut); + + m_menu->addSeparator(); + + m_menu->addAction(m_am->actionFlipHorizontal); + m_menu->addAction(m_am->actionFlipVertical); + m_menu->addAction(m_am->actionRotateClockwise); + m_menu->addAction(m_am->actionRotateCounterClockwise); + + m_menu->addSeparator(); + + m_menu->addAction(m_am->actionToggleAvoidResetTransform); + m_menu->addAction(m_am->actionToggleCheckerboard); + m_menu->addAction(m_am->actionTogglePauseAnimation); + m_menu->addAction(m_am->actionAnimationNextFrame); + + m_menu->addSeparator(); + + m_menu->addAction(m_am->actionTrash); + m_menu->addAction(m_am->actionLocateInFileManager); + m_menu->addAction(m_am->actionProperties); + + m_menu->addSeparator(); + + m_menu->addAction(m_am->actionSettings); + m_menu->addAction(m_am->actionHelp); + } + connect(m_pm, &PlaylistManager::playlistChanged, this, std::bind(&MainWindow::updateActionState, this)); connect(m_pm, &PlaylistManager::playlistChanged, this, std::bind(&MainWindow::galleryCurrent, this, false)); @@ -341,52 +387,7 @@ void MainWindow::resizeEvent(QResizeEvent *event) void MainWindow::contextMenuEvent(QContextMenuEvent *event) { - QMenu * menu = new QMenu; - - menu->addAction(m_am->actionCopyPixmap); - menu->addAction(m_am->actionCopyFilePath); - - menu->addSeparator(); - - menu->addAction(m_am->actionPrevPicture); - menu->addAction(m_am->actionNextPicture); - - menu->addSeparator(); - - menu->addAction(m_am->actionActualSize); - menu->addAction(m_am->actionFitToScreen); - menu->addAction(m_am->actionFitByWidth); - menu->addAction(m_am->actionFitByHeight); - menu->addAction(m_am->actionZoomIn); - menu->addAction(m_am->actionZoomOut); - - menu->addSeparator(); - - menu->addAction(m_am->actionFlipHorizontal); - menu->addAction(m_am->actionFlipVertical); - menu->addAction(m_am->actionRotateClockwise); - menu->addAction(m_am->actionRotateCounterClockwise); - - menu->addSeparator(); - - menu->addAction(m_am->actionToggleAvoidResetTransform); - menu->addAction(m_am->actionToggleCheckerboard); - menu->addAction(m_am->actionTogglePauseAnimation); - menu->addAction(m_am->actionAnimationNextFrame); - - menu->addSeparator(); - - menu->addAction(m_am->actionTrash); - menu->addAction(m_am->actionLocateInFileManager); - menu->addAction(m_am->actionProperties); - - menu->addSeparator(); - - menu->addAction(m_am->actionSettings); - menu->addAction(m_am->actionHelp); - - menu->exec(mapToGlobal(event->pos())); - menu->deleteLater(); + m_menu->exec(mapToGlobal(event->pos())); return FramelessWindow::contextMenuEvent(event); } diff --git a/app/mainwindow.h b/app/mainwindow.h index 9d83d85..a9ae643 100644 --- a/app/mainwindow.h +++ b/app/mainwindow.h @@ -12,6 +12,7 @@ #include QT_BEGIN_NAMESPACE +class QMenu; class QGraphicsView; class QFileSystemWatcher; QT_END_NAMESPACE @@ -105,6 +106,7 @@ private: GraphicsView *m_gv; NavigatorView *m_nav; + QMenu *m_menu; QFileSystemWatcher *m_fileSystemWatcher; BottomButtonGroup *m_bottomButtonGroup; };