From c638cbbe19a6b5da2efea18a5a04b3d67ae9c116 Mon Sep 17 00:00:00 2001 From: brige Date: Sun, 12 Oct 2025 14:33:16 +0800 Subject: [PATCH] modify ui layout and add sys_float --- src/Dyt.qrc | 1 + src/config/skin/default.qss | 11 +++++++ src/res/sys_float.png | Bin 0 -> 361 bytes src/translations/Dyt_zh_CN.ts | 52 +++++++++++++++++----------------- src/ui/DockTitleBar.cpp | 1 + src/ui/DockTitleBar.ui | 13 +++++++++ src/ui/DockWidget.cpp | 14 ++++++++- src/ui/DockWidget.h | 6 +++- src/ui/MainWindow.cpp | 11 +++++++ 9 files changed, 81 insertions(+), 28 deletions(-) create mode 100644 src/res/sys_float.png diff --git a/src/Dyt.qrc b/src/Dyt.qrc index 5f8096ca..367668a1 100644 --- a/src/Dyt.qrc +++ b/src/Dyt.qrc @@ -1,6 +1,7 @@ res/sys_close.png + res/sys_float.png res/sys_max.png res/sys_min.png res/sys_restore.png diff --git a/src/config/skin/default.qss b/src/config/skin/default.qss index 122b0a08..259c2cec 100644 --- a/src/config/skin/default.qss +++ b/src/config/skin/default.qss @@ -72,6 +72,17 @@ QPushButton#sys_close { padding: 0; } +QPushButton#sys_float { + max-width:48px; + min-width:48px; + max-height:28px; + min-height:28px; + border: none; + background: transparent; + image: url(:/res/sys_float.png); + padding: 0; +} + QPushButton#sys_min { max-width:48px; min-width:48px; diff --git a/src/res/sys_float.png b/src/res/sys_float.png new file mode 100644 index 0000000000000000000000000000000000000000..1ceeab87db824cb872d90fa92ca57620a49c06cb GIT binary patch literal 361 zcmV-v0ha!WP)yIdUi`fW&@@ffw(T$e-y_|1otg)~H-Vm}sTjvGzZHc&IgK}F0YasluIu_l=8TSE z7-~m{D2jT3e*o4K@X=85UmW^Gi|zmyoq0EAC!kPKRHSKI`b2Kg*;Mne0Ag#bazyh5 zW;Wpoya4ttu4iS}-8J?)FMxH-eNgd@9@+}P=otW&B*|7LVfT5OO%MbT-wqH;eD)|NpquDVqQQ00v1!K~w_(Z;;9%RY)6A00000NkvXX Hu0mjfvt*dr literal 0 HcmV?d00001 diff --git a/src/translations/Dyt_zh_CN.ts b/src/translations/Dyt_zh_CN.ts index f5ed3103..0ec9c791 100644 --- a/src/translations/Dyt_zh_CN.ts +++ b/src/translations/Dyt_zh_CN.ts @@ -540,132 +540,132 @@ - + model elements - + attribte - + Main View - + Wave Curve - + Speed Curve - + 3D Curve - + Target number - + Signal-to-noise ratio - + Azimuth line of sight - + Pitch gaze angle - + azimuth - + Pitch angle - + attribute - + Doppler - + course - + Speed - + longitude - + latitude - + distance - + velocity - + Radial dimensions - + Target RCS - + Report Table - + Signal Indicator Lamp - + ParamSetting - + bat File diff --git a/src/ui/DockTitleBar.cpp b/src/ui/DockTitleBar.cpp index 1271d3d7..3f63dc78 100644 --- a/src/ui/DockTitleBar.cpp +++ b/src/ui/DockTitleBar.cpp @@ -14,6 +14,7 @@ DockTitleBar::DockTitleBar(QWidget* parent) , ui(new Ui::DockTitleBar) { ui->setupUi(this); connect(ui->sys_close, &QPushButton::clicked, this, &DockTitleBar::signalClose); + connect(ui->sys_float, &QPushButton::clicked, this, &DockTitleBar::signalToggleFloating); } DockTitleBar::~DockTitleBar() { diff --git a/src/ui/DockTitleBar.ui b/src/ui/DockTitleBar.ui index 88939bf0..10d2d74f 100644 --- a/src/ui/DockTitleBar.ui +++ b/src/ui/DockTitleBar.ui @@ -49,6 +49,19 @@ + + + + + 32 + 32 + + + + + + + diff --git a/src/ui/DockWidget.cpp b/src/ui/DockWidget.cpp index 6bb51d60..69f6a2b4 100644 --- a/src/ui/DockWidget.cpp +++ b/src/ui/DockWidget.cpp @@ -1,6 +1,7 @@ #include "DockWidget.h" #include +#include #include "ui/Menu/SystemManagerMenu.h" #include "common/SpdLogger.h" @@ -8,7 +9,7 @@ DockWidgetTitleBar::DockWidgetTitleBar(QWidget* parent) - : QWidget(parent) { + : QWidget(parent) { } @@ -54,6 +55,7 @@ void DockWidget::setWindowTitle(const QString& text) { void DockWidget::SetDockWidgetTitleBar(DockWidgetTitleBar* titleBar) { if (nullptr != titleBar_) { disconnect(titleBar_, &DockWidgetTitleBar::signalClose, this, &DockWidget::close); + disconnect(titleBar_, &DockWidgetTitleBar::signalToggleFloating, this, &DockWidget::OnToggleFloat); } titleBar_ = titleBar; if (nullptr == titleBar_) { @@ -63,6 +65,7 @@ void DockWidget::SetDockWidgetTitleBar(DockWidgetTitleBar* titleBar) { titleBar_->SetTitle(windowTitle()); connect(titleBar_, &DockWidgetTitleBar::signalClose, this, &DockWidget::OnClose); + connect(titleBar_, &DockWidgetTitleBar::signalToggleFloating, this, &DockWidget::OnToggleFloat); QDockWidget::setTitleBarWidget(titleBar_); } @@ -86,3 +89,12 @@ void DockWidget::OnClose() { emit signalClose(); } +void DockWidget::OnToggleFloat() { + setFloating(!isFloating()); +} + +void DockWidgetTitleBar::mouseDoubleClickEvent(QMouseEvent* event) { + QWidget::mouseDoubleClickEvent(event); + emit signalToggleFloating(); +} + diff --git a/src/ui/DockWidget.h b/src/ui/DockWidget.h index 8a049bf4..8e878c59 100644 --- a/src/ui/DockWidget.h +++ b/src/ui/DockWidget.h @@ -6,7 +6,7 @@ #include class DockWidgetTitleBar : public QWidget { - Q_OBJECT + Q_OBJECT public: DockWidgetTitleBar(QWidget* parent); @@ -18,9 +18,12 @@ public: // return QSize(270, 900); //} //QSize minimumSizeHint() const override; +protected: + void mouseDoubleClickEvent(QMouseEvent* event) override; Q_SIGNALS: void signalClose(); + void signalToggleFloating(); }; class DockWidget : public QDockWidget { @@ -45,6 +48,7 @@ protected: private: void OnClose(); + void OnToggleFloat(); private: DockWidgetTitleBar* titleBar_{ nullptr }; diff --git a/src/ui/MainWindow.cpp b/src/ui/MainWindow.cpp index 8ac1706e..08d2594c 100644 --- a/src/ui/MainWindow.cpp +++ b/src/ui/MainWindow.cpp @@ -29,6 +29,7 @@ #include "ui_MainWindow.h" #include "viewer/OsgWidget.h" +#include "DockTitleBar.h" MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent) @@ -55,6 +56,7 @@ void MainWindow::InitUI() { setDockOptions(QMainWindow::AllowTabbedDocks | QMainWindow::AllowNestedDocks | QMainWindow::AnimatedDocks); DockWidget* model = new DockWidget(tr("model elements"), 0); + model->SetDockWidgetTitleBar(new DockTitleBar(model)); model->setObjectName("Dock.ModelBrowser"); // addDockWidget(pSettingUI->GetArea("ModelBrowser"), model); modelBrowser_ = new ModelBrowser(0); @@ -62,6 +64,7 @@ void MainWindow::InitUI() { m_mapDockWidget.insert("ModelBrowser", model); DockWidget* attribte = new DockWidget(tr("attribte"), 0); + attribte->SetDockWidgetTitleBar(new DockTitleBar(attribte)); attribte->setObjectName("Dock.PropertyBrowser"); //addDockWidget(pSettingUI->GetArea("PropertyBrowser"), attribte); propertyBrowser_ = new PropertyBrowser(0); @@ -77,6 +80,7 @@ void MainWindow::InitUI() { // 主视图改为 DockWidget,支持自由停靠 DockWidget* viewDock = new DockWidget(tr("Main View"), 0); + viewDock->SetDockWidgetTitleBar(new DockTitleBar(viewDock)); viewDock->setObjectName("Dock.MainView"); viewDock->setWidget(qtOsgViewWidget_); addDockWidget(Qt::LeftDockWidgetArea, viewDock); @@ -111,6 +115,7 @@ void MainWindow::InitUI() { } DockWidget* fitCurveDock = new DockWidget(tr("Wave Curve"), 0); + fitCurveDock->SetDockWidgetTitleBar(new DockTitleBar(fitCurveDock)); fitCurveDock->setObjectName("Dock.WaveCurveDialog"); fitCurveDlg_ = new FitCurveDialog(1); fitCurveDlg_->AttachDock(fitCurveDock); @@ -119,6 +124,7 @@ void MainWindow::InitUI() { fitCurveDlg_->InitWaveFile(wavePath); DockWidget* fitLgCurveDock = new DockWidget(tr("Speed Curve"), 0); + fitLgCurveDock->SetDockWidgetTitleBar(new DockTitleBar(fitLgCurveDock)); fitLgCurveDock->setObjectName("Dock.SpeedCurveDialog"); fitYLgCurveDlg_ = new FitCurveDialog(1); @@ -131,6 +137,7 @@ void MainWindow::InitUI() { fitYLgCurveDlg_->InitReportFile(speedPath); DockWidget* surfaceCurveDock = new DockWidget(tr("3D Curve"), 0); + surfaceCurveDock->SetDockWidgetTitleBar(new DockTitleBar(surfaceCurveDock)); surfaceCurveDock->setObjectName("Dock.3DCurveDialog"); surfaceDlg_ = new SurfaceDialog(); @@ -159,6 +166,7 @@ void MainWindow::InitUI() { targetUITable_->InitFile(speedPath, 50); DockWidget* dataTableDock = new DockWidget(tr("Report Table"), 0); + dataTableDock->SetDockWidgetTitleBar(new DockTitleBar(dataTableDock)); dataTableDock->setObjectName("Dock.TargetListWgt_Table"); // addDockWidget(pSettingUI->GetArea("TargetListWgt"), dataTableDock); targetUITable_->AttachDock(dataTableDock); @@ -171,6 +179,7 @@ void MainWindow::InitUI() { const QString lampPath = RecourceHelper::Get().GetBasePath() + "/workspace/Lamp.txt"; DockWidget* signalIndicatorLampDock = new DockWidget(tr("Signal Indicator Lamp"), 0); + signalIndicatorLampDock->SetDockWidgetTitleBar(new DockTitleBar(signalIndicatorLampDock)); signalIndicatorLampDock->setObjectName("Dock.SignalIndicatorLampUI"); signalIndicatorLampUI_ = new SignalIndicatorLampUI; signalIndicatorLampUI_->AttachDock(signalIndicatorLampDock); @@ -181,6 +190,7 @@ void MainWindow::InitUI() { tabifyDockWidget(fitCurveDock, signalIndicatorLampDock); DockWidget* addParamSettingDock = new DockWidget(tr("ParamSetting"), 0); + addParamSettingDock->SetDockWidgetTitleBar(new DockTitleBar(addParamSettingDock)); addParamSettingDock->setObjectName("Dock.ParamSetting"); addParamDlg_ = new AddParamSetting(matlabParam); addParamDlg_->AttachDock(addParamSettingDock); @@ -189,6 +199,7 @@ void MainWindow::InitUI() { tabifyDockWidget(fitCurveDock, addParamSettingDock); DockWidget* matlabDock = new DockWidget(tr("bat File"), 0); + matlabDock->SetDockWidgetTitleBar(new DockTitleBar(matlabDock)); matlabDock->setObjectName("Dock.Matlab"); matlabFileDlg_ = new CodeEdtUI; matlabFileDlg_->AttachDock(matlabDock);