优化视图管理
This commit is contained in:
parent
3e18a7dea0
commit
3d7b185afd
|
|
@ -258,7 +258,17 @@ void MainWindow::initAction()
|
||||||
dock_widget->setWidget(view);
|
dock_widget->setWidget(view);
|
||||||
dock_widget->setMinimumSizeHintMode(ads::CDockWidget::MinimumSizeHintFromDockWidget);
|
dock_widget->setMinimumSizeHintMode(ads::CDockWidget::MinimumSizeHintFromDockWidget);
|
||||||
if (view->IsDeleteOnClose()) {
|
if (view->IsDeleteOnClose()) {
|
||||||
dock_widget->setFeatures(dock_widget->features() | ads::CDockWidget::DockWidgetDeleteOnClose);
|
// dock_widget->setFeatures(dock_widget->features() | ads::CDockWidget::DockWidgetDeleteOnClose);
|
||||||
|
dock_widget->setFeatures(dock_widget->features() | ads::CDockWidget::CustomCloseHandling);
|
||||||
|
connect(dock_widget, &CDockWidget::closeRequested, [this, dock_widget, view](){
|
||||||
|
MeasureAnalysisView* dock_view = dynamic_cast<MeasureAnalysisView*>(dock_widget->widget());
|
||||||
|
if ( dock_view ) {
|
||||||
|
const QString& view_name = view->GetViewName();
|
||||||
|
if (dock_view->GetViewName() == view_name) {
|
||||||
|
_tree_measure_analysis->RemoveItemView(view_name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
if ( view->GetViewType() == MeasureAnalysisView::DataTable ) {
|
if ( view->GetViewType() == MeasureAnalysisView::DataTable ) {
|
||||||
_menu_view_data_table_list->addAction(dock_widget->toggleViewAction());
|
_menu_view_data_table_list->addAction(dock_widget->toggleViewAction());
|
||||||
|
|
@ -268,10 +278,6 @@ void MainWindow::initAction()
|
||||||
}
|
}
|
||||||
auto central_area = _dock_manager->centralWidget()->dockAreaWidget();
|
auto central_area = _dock_manager->centralWidget()->dockAreaWidget();
|
||||||
_dock_manager->addDockWidget(ads::DockWidgetArea::CenterDockWidgetArea, dock_widget, central_area);
|
_dock_manager->addDockWidget(ads::DockWidgetArea::CenterDockWidgetArea, dock_widget, central_area);
|
||||||
} else {
|
|
||||||
if ( view->IsDeleteOnClose() ) {
|
|
||||||
delete view;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,20 @@ MeasureAnalysisTreeView::MeasureAnalysisTreeView(QWidget* parent)
|
||||||
connect(this, &QTreeView::doubleClicked, this, &MeasureAnalysisTreeView::onNodeDoubleClicked);
|
connect(this, &QTreeView::doubleClicked, this, &MeasureAnalysisTreeView::onNodeDoubleClicked);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MeasureAnalysisTreeView::RemoveItemView(const QString &item_name)
|
||||||
|
{
|
||||||
|
for (auto it = _item_views.constBegin(); it!=_item_views.constEnd(); ++it ) {
|
||||||
|
MeasureAnalysisView* view = it.value();
|
||||||
|
if (view) {
|
||||||
|
if ( view->GetViewName() == item_name ) {
|
||||||
|
emit removeItemView(view);
|
||||||
|
_item_views.remove(it.key());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void MeasureAnalysisTreeView::onCustomContextMenuRequested(const QPoint& pos)
|
void MeasureAnalysisTreeView::onCustomContextMenuRequested(const QPoint& pos)
|
||||||
{
|
{
|
||||||
QModelIndex index = indexAt(pos);
|
QModelIndex index = indexAt(pos);
|
||||||
|
|
@ -56,25 +70,18 @@ void MeasureAnalysisTreeView::onNodeDoubleClicked(const QModelIndex& index)
|
||||||
if (!analysis_type_data.isValid())
|
if (!analysis_type_data.isValid())
|
||||||
return;
|
return;
|
||||||
AnalysisType analysis_type = analysis_type_data.value<AnalysisType>();
|
AnalysisType analysis_type = analysis_type_data.value<AnalysisType>();
|
||||||
|
QMap<QString, QVariant> data_files_set;
|
||||||
|
MeasureAnalysisView* view = nullptr;
|
||||||
|
if ( _item_views.contains(item) ) {
|
||||||
|
view = _item_views[item];
|
||||||
|
} else {
|
||||||
switch(analysis_type) {
|
switch(analysis_type) {
|
||||||
case AnalysisType::ParticleData: {
|
case AnalysisType::ParticleData: {
|
||||||
MeasureAnalysisProjectModel* project_model = _model->GetProjectModel(project_name);
|
MeasureAnalysisProjectModel* project_model = _model->GetProjectModel(project_name);
|
||||||
if (project_model) {
|
if (project_model) {
|
||||||
auto file_name = project_model->GetAllChannelParticleDataFilename();
|
auto file_name = project_model->GetAllChannelParticleDataFilename();
|
||||||
if ( !file_name.isEmpty() ) {
|
if ( !file_name.isEmpty() ) {
|
||||||
QMap<QString, QVariant> data_files_set;
|
|
||||||
data_files_set[QStringLiteral(u"粒子数据")] = file_name;
|
data_files_set[QStringLiteral(u"粒子数据")] = file_name;
|
||||||
MeasureAnalysisView* view = MeasureAnalysisView::NewAnalyzeView(analysis_type);
|
|
||||||
if ( view ) {
|
|
||||||
view->SetProjectName(project_name);
|
|
||||||
const auto& view_name = QStringLiteral(u"%1[%2]").arg(item_text).arg(project_name);
|
|
||||||
view->SetViewName(view_name);
|
|
||||||
view->SetViewDescription(view_name);
|
|
||||||
view->InitViewWorkspace(project_name);
|
|
||||||
view->SetAnalyzeDataFilename(data_files_set);
|
|
||||||
emit currentItemView(view);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
|
|
@ -86,18 +93,7 @@ void MeasureAnalysisTreeView::onNodeDoubleClicked(const QModelIndex& index)
|
||||||
if (project_model) {
|
if (project_model) {
|
||||||
auto file_name = project_model->GetChannelAddressCountDataFilename(ch_num);
|
auto file_name = project_model->GetChannelAddressCountDataFilename(ch_num);
|
||||||
if ( !file_name.isEmpty() ) {
|
if ( !file_name.isEmpty() ) {
|
||||||
QMap<QString, QVariant> data_files_set;
|
|
||||||
data_files_set[QStringLiteral(u"通道%1道址计数").arg(ch_num)] = file_name;
|
data_files_set[QStringLiteral(u"通道%1道址计数").arg(ch_num)] = file_name;
|
||||||
MeasureAnalysisView* view = MeasureAnalysisView::NewAnalyzeView(analysis_type);
|
|
||||||
if ( view ) {
|
|
||||||
view->SetProjectName(project_name);
|
|
||||||
const auto& view_name = QStringLiteral(u"%1[%2]").arg(item_text).arg(project_name);
|
|
||||||
view->SetViewName(view_name);
|
|
||||||
view->SetViewDescription(view_name);
|
|
||||||
view->InitViewWorkspace(project_name);
|
|
||||||
view->SetAnalyzeDataFilename(data_files_set);
|
|
||||||
emit currentItemView(view);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -107,18 +103,7 @@ void MeasureAnalysisTreeView::onNodeDoubleClicked(const QModelIndex& index)
|
||||||
if (project_model) {
|
if (project_model) {
|
||||||
auto file_name = project_model->GetParticleEnergyDataFilename();
|
auto file_name = project_model->GetParticleEnergyDataFilename();
|
||||||
if ( !file_name.isEmpty() ) {
|
if ( !file_name.isEmpty() ) {
|
||||||
QMap<QString, QVariant> data_files_set;
|
|
||||||
data_files_set[QStringLiteral(u"粒子能量数据")] = file_name;
|
data_files_set[QStringLiteral(u"粒子能量数据")] = file_name;
|
||||||
MeasureAnalysisView* view = MeasureAnalysisView::NewAnalyzeView(analysis_type);
|
|
||||||
if ( view ) {
|
|
||||||
view->SetProjectName(project_name);
|
|
||||||
const auto& view_name = QStringLiteral(u"%1[%2]").arg(item_text).arg(project_name);
|
|
||||||
view->SetViewName(view_name);
|
|
||||||
view->SetViewDescription(view_name);
|
|
||||||
view->InitViewWorkspace(project_name);
|
|
||||||
view->SetAnalyzeDataFilename(data_files_set);
|
|
||||||
emit currentItemView(view);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
|
|
@ -127,7 +112,6 @@ void MeasureAnalysisTreeView::onNodeDoubleClicked(const QModelIndex& index)
|
||||||
if (project_model) {
|
if (project_model) {
|
||||||
auto file_name_list = project_model->GetChannelAddressCountDataFilenameList();
|
auto file_name_list = project_model->GetChannelAddressCountDataFilenameList();
|
||||||
if ( !file_name_list.isEmpty() ) {
|
if ( !file_name_list.isEmpty() ) {
|
||||||
QMap<QString, QVariant> data_files_set;
|
|
||||||
auto ch_num_list = file_name_list.keys();
|
auto ch_num_list = file_name_list.keys();
|
||||||
for(auto ch_num : ch_num_list) {
|
for(auto ch_num : ch_num_list) {
|
||||||
auto file_name = file_name_list[ch_num];
|
auto file_name = file_name_list[ch_num];
|
||||||
|
|
@ -135,10 +119,13 @@ void MeasureAnalysisTreeView::onNodeDoubleClicked(const QModelIndex& index)
|
||||||
data_files_set[QStringLiteral(u"通道%1").arg(ch_num)] = file_name;
|
data_files_set[QStringLiteral(u"通道%1").arg(ch_num)] = file_name;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
MeasureAnalysisView* view = nullptr;
|
}
|
||||||
if ( _item_views.contains(item) ) {
|
}
|
||||||
view = _item_views[item];
|
} break;
|
||||||
} else {
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (!data_files_set.isEmpty()) {
|
||||||
view = MeasureAnalysisView::NewAnalyzeView(analysis_type);
|
view = MeasureAnalysisView::NewAnalyzeView(analysis_type);
|
||||||
view->SetProjectName(project_name);
|
view->SetProjectName(project_name);
|
||||||
const auto& view_name = QStringLiteral(u"%1[%2]").arg(item_text).arg(project_name);
|
const auto& view_name = QStringLiteral(u"%1[%2]").arg(item_text).arg(project_name);
|
||||||
|
|
@ -146,16 +133,10 @@ void MeasureAnalysisTreeView::onNodeDoubleClicked(const QModelIndex& index)
|
||||||
view->SetViewDescription(view_name);
|
view->SetViewDescription(view_name);
|
||||||
view->InitViewWorkspace(project_name);
|
view->InitViewWorkspace(project_name);
|
||||||
view->SetAnalyzeDataFilename(data_files_set);
|
view->SetAnalyzeDataFilename(data_files_set);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if ( view ) {
|
if ( view ) {
|
||||||
_item_views[item] = view;
|
_item_views[item] = view;
|
||||||
emit currentItemView(view);
|
emit currentItemView(view);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
} break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@ class MeasureAnalysisTreeView : public QTreeView
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
explicit MeasureAnalysisTreeView(QWidget *parent = nullptr);
|
explicit MeasureAnalysisTreeView(QWidget *parent = nullptr);
|
||||||
|
void RemoveItemView(const QString& item_name);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void onCustomContextMenuRequested(const QPoint &pos);
|
void onCustomContextMenuRequested(const QPoint &pos);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user