modify ui layout
This commit is contained in:
parent
bfd45c3a4a
commit
0e8d2aaf7d
2
.gitignore
vendored
2
.gitignore
vendored
@ -2,3 +2,5 @@
|
||||
build/
|
||||
bin/
|
||||
thirdparty/
|
||||
tritoin/
|
||||
QWEN.md
|
||||
|
||||
@ -14,8 +14,8 @@ find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Core Widgets LinguistTools DataVis
|
||||
|
||||
message("qt VERSION " ${QT_VERSION_MAJOR})
|
||||
|
||||
FILE(GLOB_RECURSE HEADER_FILES ./*.h common/*.h common/*.hpp model/*.h app/*.h)
|
||||
FILE(GLOB_RECURSE CPP_FILES ./*.cpp common/*.cpp model/*.cpp app/*.cpp)
|
||||
FILE(GLOB_RECURSE HEADER_FILES ./*.h common/*.h common/*.hpp model/*.h app/*.h utils/*.h)
|
||||
FILE(GLOB_RECURSE CPP_FILES ./*.cpp common/*.cpp model/*.cpp app/*.cpp utils/*.cpp)
|
||||
FILE(GLOB_RECURSE CC_FILES ./*.cc)
|
||||
FILE(GLOB_RECURSE UI_FILES ./*.ui)
|
||||
FILE(GLOB_RECURSE QRC_FILES ./*.qrc)
|
||||
|
||||
@ -540,127 +540,132 @@
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/MainWindow.cpp" line="65"/>
|
||||
<location filename="../ui/MainWindow.cpp" line="57"/>
|
||||
<source>model elements</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/MainWindow.cpp" line="71"/>
|
||||
<location filename="../ui/MainWindow.cpp" line="64"/>
|
||||
<source>attribte</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/MainWindow.cpp" line="108"/>
|
||||
<location filename="../ui/MainWindow.cpp" line="79"/>
|
||||
<source>Main View</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/MainWindow.cpp" line="113"/>
|
||||
<source>Wave Curve</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/MainWindow.cpp" line="114"/>
|
||||
<location filename="../ui/MainWindow.cpp" line="121"/>
|
||||
<source>Speed Curve</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/MainWindow.cpp" line="123"/>
|
||||
<location filename="../ui/MainWindow.cpp" line="133"/>
|
||||
<source>3D Curve</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/MainWindow.cpp" line="135"/>
|
||||
<location filename="../ui/MainWindow.cpp" line="148"/>
|
||||
<source>Target number</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/MainWindow.cpp" line="135"/>
|
||||
<location filename="../ui/MainWindow.cpp" line="148"/>
|
||||
<source>Signal-to-noise ratio</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/MainWindow.cpp" line="136"/>
|
||||
<location filename="../ui/MainWindow.cpp" line="149"/>
|
||||
<source>Azimuth line of sight</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/MainWindow.cpp" line="136"/>
|
||||
<location filename="../ui/MainWindow.cpp" line="149"/>
|
||||
<source>Pitch gaze angle</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/MainWindow.cpp" line="137"/>
|
||||
<location filename="../ui/MainWindow.cpp" line="150"/>
|
||||
<source>azimuth</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/MainWindow.cpp" line="137"/>
|
||||
<location filename="../ui/MainWindow.cpp" line="150"/>
|
||||
<source>Pitch angle</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/MainWindow.cpp" line="138"/>
|
||||
<location filename="../ui/MainWindow.cpp" line="151"/>
|
||||
<source>attribute</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/MainWindow.cpp" line="138"/>
|
||||
<location filename="../ui/MainWindow.cpp" line="151"/>
|
||||
<source>Doppler</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/MainWindow.cpp" line="139"/>
|
||||
<location filename="../ui/MainWindow.cpp" line="152"/>
|
||||
<source>course</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/MainWindow.cpp" line="139"/>
|
||||
<location filename="../ui/MainWindow.cpp" line="152"/>
|
||||
<source>Speed</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/MainWindow.cpp" line="140"/>
|
||||
<location filename="../ui/MainWindow.cpp" line="153"/>
|
||||
<source>longitude</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/MainWindow.cpp" line="140"/>
|
||||
<location filename="../ui/MainWindow.cpp" line="153"/>
|
||||
<source>latitude</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/MainWindow.cpp" line="141"/>
|
||||
<location filename="../ui/MainWindow.cpp" line="154"/>
|
||||
<source>distance</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/MainWindow.cpp" line="141"/>
|
||||
<location filename="../ui/MainWindow.cpp" line="154"/>
|
||||
<source>velocity</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/MainWindow.cpp" line="142"/>
|
||||
<location filename="../ui/MainWindow.cpp" line="155"/>
|
||||
<source>Radial dimensions</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/MainWindow.cpp" line="142"/>
|
||||
<location filename="../ui/MainWindow.cpp" line="155"/>
|
||||
<source>Target RCS</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/MainWindow.cpp" line="148"/>
|
||||
<location filename="../ui/MainWindow.cpp" line="161"/>
|
||||
<source>Report Table</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/MainWindow.cpp" line="157"/>
|
||||
<location filename="../ui/MainWindow.cpp" line="173"/>
|
||||
<source>Signal Indicator Lamp</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/MainWindow.cpp" line="164"/>
|
||||
<location filename="../ui/MainWindow.cpp" line="183"/>
|
||||
<source>ParamSetting</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ui/MainWindow.cpp" line="169"/>
|
||||
<location filename="../ui/MainWindow.cpp" line="191"/>
|
||||
<source>bat File</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
#include "MainWindow.h"
|
||||
|
||||
#include <qtabwidget.h>
|
||||
#include "utils/UiLayoutManager.h"
|
||||
|
||||
#include "PropertyBrowser.h"
|
||||
#include "ModelBrowser.h"
|
||||
@ -43,43 +44,47 @@ MainWindow::~MainWindow() {
|
||||
}
|
||||
|
||||
void MainWindow::InitUI() {
|
||||
|
||||
tabWidget_ = new QTabWidget;
|
||||
tabWidget_->setTabPosition(QTabWidget::South);
|
||||
tabWidget_->tabBar()->setMinimumWidth(300);
|
||||
|
||||
ui->viewWidget->layout()->addWidget(tabWidget_);
|
||||
|
||||
pSettingUI = new LayoutSettingUI();
|
||||
|
||||
const QString uiLaytouPath = RecourceHelper::Get().GetBasePath() + "/workspace/UILayout.xml";
|
||||
|
||||
pSettingUI->InitConfig(uiLaytouPath);
|
||||
//pSettingUI->show();
|
||||
|
||||
connect(pSettingUI, &LayoutSettingUI::signalUpdate, this, &MainWindow::InitDockLayout);
|
||||
QWidget* centralWidget = takeCentralWidget();
|
||||
if (nullptr != centralWidget) {
|
||||
delete centralWidget;
|
||||
}
|
||||
setDockNestingEnabled(true);
|
||||
|
||||
setCorner(Qt::BottomLeftCorner, Qt::LeftDockWidgetArea);
|
||||
setCorner(Qt::BottomRightCorner, Qt::RightDockWidgetArea);
|
||||
setDockOptions(QMainWindow::AllowTabbedDocks | QMainWindow::AllowNestedDocks | QMainWindow::AnimatedDocks);
|
||||
|
||||
DockWidget* model = new DockWidget(tr("model elements"), 0);
|
||||
model->setObjectName("Dock.ModelBrowser");
|
||||
// addDockWidget(pSettingUI->GetArea("ModelBrowser"), model);
|
||||
modelBrowser_ = new ModelBrowser(0);
|
||||
modelBrowser_->AttachDock(model);
|
||||
m_mapDockWidget.insert("ModelBrowser", model);
|
||||
|
||||
DockWidget* attribte = new DockWidget(tr("attribte"), 0);
|
||||
attribte->setObjectName("Dock.PropertyBrowser");
|
||||
//addDockWidget(pSettingUI->GetArea("PropertyBrowser"), attribte);
|
||||
propertyBrowser_ = new PropertyBrowser(0);
|
||||
propertyBrowser_->AttachDock(attribte);
|
||||
m_mapDockWidget.insert("PropertyBrowser", attribte);
|
||||
addDockWidget(Qt::RightDockWidgetArea, attribte);
|
||||
|
||||
connect(modelBrowser_, &ModelBrowser::WorkSpaceChange, propertyBrowser_, &PropertyBrowser::OnWorkSpaceChange);
|
||||
connect(modelBrowser_, &ModelBrowser::EntityChange, propertyBrowser_, &PropertyBrowser::OnEntityChange);
|
||||
|
||||
qtOsgViewWidget_ = new OsgWidget;
|
||||
qtOsgViewWidget_->Initialize();
|
||||
//m_mapDockWidget.insert("PropertyBrowser", attribte);
|
||||
|
||||
// 主视图改为 DockWidget,支持自由停靠
|
||||
DockWidget* viewDock = new DockWidget(tr("Main View"), 0);
|
||||
viewDock->setObjectName("Dock.MainView");
|
||||
viewDock->setWidget(qtOsgViewWidget_);
|
||||
addDockWidget(Qt::LeftDockWidgetArea, viewDock);
|
||||
m_mapDockWidget.insert("MainView", viewDock);
|
||||
|
||||
// 左侧模型面板,并与主视图横向并排(类似 VS 左侧工具 + 中间视图)
|
||||
addDockWidget(Qt::LeftDockWidgetArea, model);
|
||||
splitDockWidget(model, viewDock, Qt::Horizontal);
|
||||
|
||||
QString wavePath ="", speedPath = "", rdPath = "", matlabParam="";
|
||||
if (WorkSpaceManager::Get().GetCurrent())
|
||||
@ -106,25 +111,33 @@ void MainWindow::InitUI() {
|
||||
}
|
||||
|
||||
DockWidget* fitCurveDock = new DockWidget(tr("Wave Curve"), 0);
|
||||
fitCurveDock->setObjectName("Dock.WaveCurveDialog");
|
||||
fitCurveDlg_ = new FitCurveDialog(1);
|
||||
fitCurveDlg_->AttachDock(fitCurveDock);
|
||||
m_mapDockWidget.insert("WaveCurveDialog", fitCurveDock);
|
||||
addDockWidget(Qt::BottomDockWidgetArea, fitCurveDock);
|
||||
|
||||
fitCurveDlg_->InitWaveFile(wavePath);
|
||||
DockWidget* fitLgCurveDock = new DockWidget(tr("Speed Curve"), 0);
|
||||
fitLgCurveDock->setObjectName("Dock.SpeedCurveDialog");
|
||||
|
||||
fitYLgCurveDlg_ = new FitCurveDialog(1);
|
||||
fitYLgCurveDlg_->AttachDock(fitLgCurveDock);
|
||||
m_mapDockWidget.insert("SpeedCurveDialog", fitLgCurveDock);
|
||||
addDockWidget(Qt::BottomDockWidgetArea, fitLgCurveDock);
|
||||
tabifyDockWidget(fitCurveDock, fitLgCurveDock);
|
||||
|
||||
|
||||
fitYLgCurveDlg_->InitReportFile(speedPath);
|
||||
|
||||
DockWidget* surfaceCurveDock = new DockWidget(tr("3D Curve"), 0);
|
||||
surfaceCurveDock->setObjectName("Dock.3DCurveDialog");
|
||||
|
||||
surfaceDlg_ = new SurfaceDialog();
|
||||
surfaceDlg_->AttachDock(surfaceCurveDock);
|
||||
m_mapDockWidget.insert("3DCurveDialog", surfaceCurveDock);
|
||||
addDockWidget(Qt::BottomDockWidgetArea, surfaceCurveDock);
|
||||
tabifyDockWidget(fitCurveDock, surfaceCurveDock);
|
||||
|
||||
surfaceDlg_->InitRD(rdPath);
|
||||
|
||||
@ -146,36 +159,51 @@ void MainWindow::InitUI() {
|
||||
targetUITable_->InitFile(speedPath, 50);
|
||||
|
||||
DockWidget* dataTableDock = new DockWidget(tr("Report Table"), 0);
|
||||
dataTableDock->setObjectName("Dock.TargetListWgt_Table");
|
||||
// addDockWidget(pSettingUI->GetArea("TargetListWgt"), dataTableDock);
|
||||
targetUITable_->AttachDock(dataTableDock);
|
||||
m_mapDockWidget.insert("TargetListWgt_Table", dataTableDock);
|
||||
addDockWidget(Qt::BottomDockWidgetArea, dataTableDock);
|
||||
tabifyDockWidget(fitCurveDock, dataTableDock);
|
||||
|
||||
}
|
||||
|
||||
const QString lampPath = RecourceHelper::Get().GetBasePath() + "/workspace/Lamp.txt";
|
||||
|
||||
DockWidget* signalIndicatorLampDock = new DockWidget(tr("Signal Indicator Lamp"), 0);
|
||||
signalIndicatorLampDock->setObjectName("Dock.SignalIndicatorLampUI");
|
||||
signalIndicatorLampUI_ = new SignalIndicatorLampUI;
|
||||
signalIndicatorLampUI_->AttachDock(signalIndicatorLampDock);
|
||||
signalIndicatorLampUI_->InitLamp(lampPath);
|
||||
|
||||
m_mapDockWidget.insert("SignalIndicatorLampUI", signalIndicatorLampDock);
|
||||
addDockWidget(Qt::BottomDockWidgetArea, signalIndicatorLampDock);
|
||||
tabifyDockWidget(fitCurveDock, signalIndicatorLampDock);
|
||||
|
||||
DockWidget* addParamSettingDock = new DockWidget(tr("ParamSetting"), 0);
|
||||
addParamSettingDock->setObjectName("Dock.ParamSetting");
|
||||
addParamDlg_ = new AddParamSetting(matlabParam);
|
||||
addParamDlg_->AttachDock(addParamSettingDock);
|
||||
m_mapDockWidget.insert("ParamSetting", addParamSettingDock);
|
||||
addDockWidget(Qt::BottomDockWidgetArea, addParamSettingDock);
|
||||
tabifyDockWidget(fitCurveDock, addParamSettingDock);
|
||||
|
||||
DockWidget* matlabDock = new DockWidget(tr("bat File"), 0);
|
||||
matlabDock->setObjectName("Dock.Matlab");
|
||||
matlabFileDlg_ = new CodeEdtUI;
|
||||
matlabFileDlg_->AttachDock(matlabDock);
|
||||
m_mapDockWidget.insert("Matlab", matlabDock);
|
||||
addDockWidget(Qt::BottomDockWidgetArea, matlabDock);
|
||||
tabifyDockWidget(fitCurveDock, matlabDock);
|
||||
|
||||
//ui->discript->setText(tr("name: 5year 0412"));
|
||||
//ui->status->setText(tr("start: no start"));
|
||||
|
||||
InitDockLayout();
|
||||
|
||||
// InitDockLayout();
|
||||
|
||||
// Restore previous UI layout if available
|
||||
UiLayoutManager::Restore(this, 1);
|
||||
|
||||
//ui->viewWidget->layout()->addWidget(qtOsgViewWidget_);
|
||||
qtOsgViewWidget_->LoadDefaultScene();
|
||||
/*OsgViewer::Get().Initialize();
|
||||
@ -188,6 +216,8 @@ void MainWindow::InitUI() {
|
||||
}
|
||||
|
||||
void MainWindow::UninitUI() {
|
||||
// Save layout state before tearing down widgets
|
||||
UiLayoutManager::Save(this, 1);
|
||||
if (qtOsgViewWidget_) {
|
||||
qtOsgViewWidget_->Uninitialize();
|
||||
delete qtOsgViewWidget_;
|
||||
@ -195,157 +225,6 @@ void MainWindow::UninitUI() {
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::InitDockLayout() {
|
||||
while (tabWidget_->count() > 0) {
|
||||
tabWidget_->removeTab(0);
|
||||
}
|
||||
|
||||
tabWidget_->tabBar()->setExpanding(true);
|
||||
|
||||
QVariantList listTab = pSettingUI->GetAreaLayout().toList();
|
||||
for (int i = 0; i < listTab.size(); i++) {
|
||||
QVariantMap mapTab = listTab[i].toMap();
|
||||
QString strTabName = mapTab.value("Name").toString();
|
||||
|
||||
QMainWindow* mainWindow_ = new QMainWindow;
|
||||
connect(mainWindow_, &QMainWindow::tabifiedDockWidgetActivated, this, &MainWindow::OnTabifiedDockWidgetActivated);
|
||||
|
||||
QVariantList listDocArea = mapTab.value("Widget").toList();
|
||||
|
||||
tabWidget_->insertTab(i, mainWindow_, strTabName);
|
||||
if (listDocArea[0].toList().size() > 0) {
|
||||
mainWindow_->setCentralWidget(qtOsgViewWidget_);
|
||||
//OsgViewer::Get().Initialize();
|
||||
//OsgViewer::Get().OnFrame();
|
||||
} else {
|
||||
mainWindow_->takeCentralWidget();
|
||||
}
|
||||
|
||||
|
||||
if (listDocArea.size() > 0) {
|
||||
QDockWidget* lastDock = nullptr;
|
||||
|
||||
for (int j = 1; j < listDocArea.size(); j++) {
|
||||
Qt::DockWidgetArea dockArea;
|
||||
if (j == 1) {
|
||||
dockArea = Qt::LeftDockWidgetArea;
|
||||
} else if (j == 2) {
|
||||
dockArea = Qt::TopDockWidgetArea;
|
||||
} else if (j == 3) {
|
||||
dockArea = Qt::RightDockWidgetArea;
|
||||
} else if (j == 4) {
|
||||
dockArea = Qt::BottomDockWidgetArea;
|
||||
}
|
||||
|
||||
QVariantList listDocAreaChild = listDocArea[j].toList();
|
||||
for (int m = 0; m < listDocAreaChild.size(); m++) {
|
||||
QVariant varWidget = listDocAreaChild[m];
|
||||
|
||||
if (varWidget.type() == QVariant::String) {
|
||||
QDockWidget* pDock = m_mapDockWidget.value(varWidget.toString());
|
||||
if (pDock == nullptr) {
|
||||
continue;
|
||||
}
|
||||
mainWindow_->addDockWidget(dockArea, pDock);
|
||||
lastDock = pDock;
|
||||
} else {
|
||||
QVariantList listWidget = varWidget.toList();
|
||||
for (int k = 0; k < listWidget.size(); k++) {
|
||||
QDockWidget* pDock = m_mapDockWidget.value(listWidget[k].toString());
|
||||
mainWindow_->addDockWidget(dockArea, pDock);
|
||||
|
||||
if (k == 0) {
|
||||
if (lastDock) {
|
||||
mainWindow_->splitDockWidget(lastDock, pDock, Qt::Vertical);
|
||||
}
|
||||
} else {
|
||||
mainWindow_->splitDockWidget(lastDock, pDock, Qt::Horizontal);
|
||||
}
|
||||
|
||||
lastDock = pDock;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
tabWidget_->tabBar()->setMinimumWidth(500);
|
||||
/* AddDockArea("DockLeftArea");
|
||||
AddDockArea("DockTopArea");
|
||||
AddDockArea("DockRightArea");
|
||||
AddDockArea("DockBottomArea");*/
|
||||
}
|
||||
|
||||
void MainWindow::AddDockArea(const QString& strArea) {
|
||||
Qt::DockWidgetArea dockArea;
|
||||
Qt::Orientation orient;
|
||||
|
||||
if (strArea == "DockLeftArea") {
|
||||
dockArea = Qt::LeftDockWidgetArea;
|
||||
orient = Qt::Vertical;
|
||||
} else if (strArea == "DockTopArea") {
|
||||
dockArea = Qt::TopDockWidgetArea;
|
||||
orient = Qt::Horizontal;
|
||||
} else if (strArea == "DockRightArea") {
|
||||
dockArea = Qt::RightDockWidgetArea;
|
||||
orient = Qt::Vertical;
|
||||
} else if (strArea == "DockBottomArea") {
|
||||
dockArea = Qt::BottomDockWidgetArea;
|
||||
orient = Qt::Horizontal;
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
|
||||
QList<QDockWidget*> listAdd;
|
||||
|
||||
QVariant varArea = pSettingUI->GetAreaLayout();
|
||||
if (varArea.isValid()) {
|
||||
QVariantList listWidget = varArea.toList();
|
||||
for each(QVariant varWidget in listWidget) {
|
||||
if (varWidget.type() == QVariant::String) {
|
||||
QDockWidget* pDock = m_mapDockWidget.value(varWidget.toString());
|
||||
addDockWidget(dockArea, pDock);
|
||||
|
||||
listAdd.push_back(pDock);
|
||||
} else {
|
||||
QDockWidget* pLastDock = nullptr;
|
||||
QVariantList listTab = varWidget.toList();
|
||||
for each(QVariant tabChild in listTab) {
|
||||
QDockWidget* pDock = m_mapDockWidget.value(tabChild.toString());
|
||||
addDockWidget(dockArea, pDock);
|
||||
|
||||
if (pLastDock) {
|
||||
//tabifyDockWidget(pLastDock, pDock);
|
||||
splitDockWidget(pLastDock, pDock, Qt::Horizontal);
|
||||
}
|
||||
|
||||
listAdd.push_back(pDock);
|
||||
|
||||
pLastDock = pDock;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
QList<int> listSpliter;
|
||||
for (size_t i = 0; i < listAdd.size(); i++) {
|
||||
listSpliter.push_back(1);
|
||||
}
|
||||
|
||||
resizeDocks(listAdd, listSpliter, orient);
|
||||
}
|
||||
|
||||
void MainWindow::OnTabifiedDockWidgetActivated(QDockWidget* dockWidget) {
|
||||
//if (dockWidget) {
|
||||
// QMainWindow* mainWindow = qobject_cast<QMainWindow*>(dockWidget->parentWidget());
|
||||
// if (mainWindow) {
|
||||
// mainWindow->removeDockWidget(dockWidget);
|
||||
// }
|
||||
|
||||
// // tabWidget_->setCurrentWidget(dockWidget->parentWidget());
|
||||
//}
|
||||
}
|
||||
|
||||
void MainWindow::slotShowUISetting() {
|
||||
pSettingUI->show();
|
||||
}
|
||||
|
||||
@ -44,12 +44,6 @@ private:
|
||||
void InitUI();
|
||||
void UninitUI();
|
||||
|
||||
void InitDockLayout();
|
||||
void AddDockArea(const QString& strArea);
|
||||
|
||||
protected:
|
||||
void OnTabifiedDockWidgetActivated(QDockWidget* dockWidget);
|
||||
|
||||
private:
|
||||
Ui::MainWindow* ui;
|
||||
|
||||
|
||||
@ -1,131 +1,20 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>MainWindow</class>
|
||||
<widget class="QMainWindow" name="MainWindow">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>800</width>
|
||||
<height>658</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>MainWindow</string>
|
||||
</property>
|
||||
<widget class="QWidget" name="centralwidget">
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QWidget" name="viewDisplay" native="true">
|
||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||
<property name="leftMargin">
|
||||
<number>19</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>19</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>19</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>19</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QWidget" name="viewWidget" native="true">
|
||||
<layout class="QGridLayout" name="gridLayout_2">
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item row="0" column="0">
|
||||
<layout class="QGridLayout" name="gridLayout"/>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QWidget" name="statusWidget" native="true">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>16777215</width>
|
||||
<height>30</height>
|
||||
</size>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QLabel" name="discript">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="status">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>767</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
<class>MainWindow</class>
|
||||
<widget class="QMainWindow" name="MainWindow">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>1223</width>
|
||||
<height>950</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>MainWindow</string>
|
||||
</property>
|
||||
<widget class="QWidget" name="centralwidget"/>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
||||
|
||||
38
src/utils/UiLayoutManager.cpp
Normal file
38
src/utils/UiLayoutManager.cpp
Normal file
@ -0,0 +1,38 @@
|
||||
#include "UiLayoutManager.h"
|
||||
|
||||
#include <QSettings>
|
||||
#include <QFile>
|
||||
#include <QMainWindow>
|
||||
|
||||
#include "common/RecourceHelper.h"
|
||||
|
||||
namespace {
|
||||
static inline QString layoutIniPath() {
|
||||
return RecourceHelper::Get().GetBasePath() + "/config/UIState.ini";
|
||||
}
|
||||
}
|
||||
|
||||
void UiLayoutManager::Save(QMainWindow* mainWindow, int version) {
|
||||
if (!mainWindow) return;
|
||||
const QString iniPath = layoutIniPath();
|
||||
QSettings settings(iniPath, QSettings::IniFormat);
|
||||
settings.setValue("MainWindow/geometry", mainWindow->saveGeometry());
|
||||
settings.setValue("MainWindow/state", mainWindow->saveState(version));
|
||||
}
|
||||
|
||||
void UiLayoutManager::Restore(QMainWindow* mainWindow, int version) {
|
||||
if (!mainWindow) return;
|
||||
const QString iniPath = layoutIniPath();
|
||||
if (!QFile::exists(iniPath)) {
|
||||
return;
|
||||
}
|
||||
QSettings settings(iniPath, QSettings::IniFormat);
|
||||
const QByteArray geometry = settings.value("MainWindow/geometry").toByteArray();
|
||||
if (!geometry.isEmpty()) {
|
||||
mainWindow->restoreGeometry(geometry);
|
||||
}
|
||||
const QByteArray state = settings.value("MainWindow/state").toByteArray();
|
||||
if (!state.isEmpty()) {
|
||||
mainWindow->restoreState(state, version);
|
||||
}
|
||||
}
|
||||
13
src/utils/UiLayoutManager.h
Normal file
13
src/utils/UiLayoutManager.h
Normal file
@ -0,0 +1,13 @@
|
||||
#pragma once
|
||||
|
||||
#include <QString>
|
||||
class QMainWindow;
|
||||
|
||||
class UiLayoutManager {
|
||||
public:
|
||||
// 保存主窗口布局到 workspace/UIState.ini
|
||||
static void Save(QMainWindow* mainWindow, int version = 1);
|
||||
|
||||
// 从 workspace/UIState.ini 恢复布局
|
||||
static void Restore(QMainWindow* mainWindow, int version = 1);
|
||||
};
|
||||
Loading…
Reference in New Issue
Block a user