21 #include <QHBoxLayout> 22 #include <qsplitter.h> 25 : QObject(multiwidget)
26 , m_MultiWidget(multiwidget)
27 , m_CurrentRenderWindowWidget(nullptr)
34 if (
nullptr == m_MultiWidget)
109 m_CurrentRenderWindowWidget = renderWindowWidget;
114 MITK_INFO <<
"Set default layout" << std::endl;
118 delete m_MultiWidget->layout();
120 auto hBoxLayout =
new QHBoxLayout(m_MultiWidget);
121 hBoxLayout->setContentsMargins(0, 0, 0, 0);
122 m_MultiWidget->setLayout(hBoxLayout);
123 hBoxLayout->setMargin(0);
125 auto mainSplit =
new QSplitter(Qt::Vertical, m_MultiWidget);
126 hBoxLayout->addWidget(mainSplit);
128 QList<int> splitterSizeRow;
129 for (
int row = 0; row < m_MultiWidget->
GetRowCount(); ++row)
131 splitterSizeRow.push_back(1000);
133 QList<int> splitterSizeColumn;
134 auto splitter =
new QSplitter(mainSplit);
135 for (
int column = 0; column < m_MultiWidget->
GetColumnCount(); ++column)
137 splitterSizeColumn.push_back(1000);
139 splitter->addWidget(renderWindowWidget.get());
140 renderWindowWidget->show();
142 splitter->setSizes(splitterSizeColumn);
145 mainSplit->setSizes(splitterSizeRow);
150 for (
auto& renderWindow : allRenderWindows)
158 MITK_INFO <<
"Set all 2D top and 3D bottom layout" << std::endl;
162 delete m_MultiWidget->layout();
164 auto hBoxLayout =
new QHBoxLayout(m_MultiWidget);
165 hBoxLayout->setContentsMargins(0, 0, 0, 0);
166 m_MultiWidget->setLayout(hBoxLayout);
167 hBoxLayout->setMargin(0);
169 auto mainSplit =
new QSplitter(Qt::Vertical, m_MultiWidget);
170 hBoxLayout->addWidget(mainSplit);
172 auto subSplit2D =
new QSplitter(mainSplit);
173 QList<int> splitterSize;
175 for (
const auto& renderWindowWidget : all2DRenderWindowWidgets)
177 subSplit2D->addWidget(renderWindowWidget.second.get());
178 renderWindowWidget.second->show();
179 splitterSize.push_back(1000);
181 subSplit2D->setSizes(splitterSize);
183 auto subSplit3D =
new QSplitter(mainSplit);
184 splitterSize.clear();
186 for (
const auto& renderWindowWidget : all3DRenderWindowWidgets)
188 subSplit3D->addWidget(renderWindowWidget.second.get());
189 renderWindowWidget.second->show();
190 splitterSize.push_back(1000);
192 subSplit3D->setSizes(splitterSize);
195 splitterSize.clear();
196 splitterSize.push_back(600);
197 splitterSize.push_back(1000);
198 mainSplit->setSizes(splitterSize);
203 for (
auto& renderWindow : allRenderWindows)
211 MITK_INFO <<
"Set all 2D left and 3D right layout" << std::endl;
215 delete m_MultiWidget->layout();
217 auto hBoxLayout =
new QHBoxLayout(m_MultiWidget);
218 hBoxLayout->setContentsMargins(0, 0, 0, 0);
219 m_MultiWidget->setLayout(hBoxLayout);
220 hBoxLayout->setMargin(0);
222 auto mainSplit =
new QSplitter(m_MultiWidget);
223 hBoxLayout->addWidget(mainSplit);
225 auto subSplit2D =
new QSplitter(Qt::Vertical, mainSplit);
226 QList<int> splitterSize;
228 for (
const auto& renderWindowWidget : all2DRenderWindowWidgets)
230 subSplit2D->addWidget(renderWindowWidget.second.get());
231 renderWindowWidget.second->show();
232 splitterSize.push_back(1000);
234 subSplit2D->setSizes(splitterSize);
236 auto subSplit3D =
new QSplitter(mainSplit);
237 splitterSize.clear();
239 for (
const auto& renderWindowWidget : all3DRenderWindowWidgets)
241 subSplit3D->addWidget(renderWindowWidget.second.get());
242 renderWindowWidget.second->show();
243 splitterSize.push_back(1000);
245 subSplit3D->setSizes(splitterSize);
248 splitterSize.clear();
249 splitterSize.push_back(600);
250 splitterSize.push_back(1000);
251 mainSplit->setSizes(splitterSize);
256 for (
auto& renderWindow : allRenderWindows)
264 MITK_INFO <<
"Set single 2D layout" << std::endl;
268 delete m_MultiWidget->layout();
270 auto hBoxLayout =
new QHBoxLayout(m_MultiWidget);
271 hBoxLayout->setContentsMargins(0, 0, 0, 0);
272 m_MultiWidget->setLayout(hBoxLayout);
273 hBoxLayout->setMargin(0);
275 auto mainSplit =
new QSplitter(m_MultiWidget);
276 hBoxLayout->addWidget(mainSplit);
277 mainSplit->addWidget(m_CurrentRenderWindowWidget);
278 m_CurrentRenderWindowWidget->show();
283 for (
auto& renderWindow : allRenderWindows)
291 MITK_INFO <<
"Set only 2D layout" << std::endl;
295 delete m_MultiWidget->layout();
297 auto hBoxLayout =
new QHBoxLayout(m_MultiWidget);
298 hBoxLayout->setContentsMargins(0, 0, 0, 0);
299 m_MultiWidget->setLayout(hBoxLayout);
300 hBoxLayout->setMargin(0);
302 auto mainSplit =
new QSplitter(m_MultiWidget);
303 hBoxLayout->addWidget(mainSplit);
305 QList<int> splitterSize;
307 for (
const auto& renderWindowWidget : all2DRenderWindowWidgets)
309 mainSplit->addWidget(renderWindowWidget.second.get());
310 renderWindowWidget.second->show();
311 splitterSize.push_back(1000);
313 mainSplit->setSizes(splitterSize);
318 for (
auto& renderWindow : allRenderWindows)
326 MITK_INFO <<
"Set only 2D layout" << std::endl;
330 delete m_MultiWidget->layout();
332 auto hBoxLayout =
new QHBoxLayout(m_MultiWidget);
333 hBoxLayout->setContentsMargins(0, 0, 0, 0);
334 m_MultiWidget->setLayout(hBoxLayout);
335 hBoxLayout->setMargin(0);
337 auto mainSplit =
new QSplitter(Qt::Vertical, m_MultiWidget);
338 hBoxLayout->addWidget(mainSplit);
340 QList<int> splitterSize;
342 for (
const auto& renderWindowWidget : all2DRenderWindowWidgets)
344 mainSplit->addWidget(renderWindowWidget.second.get());
345 renderWindowWidget.second->show();
346 splitterSize.push_back(1000);
348 mainSplit->setSizes(splitterSize);
353 for (
auto& renderWindow : allRenderWindows)
361 MITK_INFO <<
"Set one top and all 3D bottom layout" << std::endl;
365 delete m_MultiWidget->layout();
367 auto hBoxLayout =
new QHBoxLayout(m_MultiWidget);
368 hBoxLayout->setContentsMargins(0, 0, 0, 0);
369 m_MultiWidget->setLayout(hBoxLayout);
370 hBoxLayout->setMargin(0);
372 auto mainSplit =
new QSplitter(Qt::Vertical, m_MultiWidget);
373 hBoxLayout->addWidget(mainSplit);
375 mainSplit->addWidget(m_CurrentRenderWindowWidget);
376 m_CurrentRenderWindowWidget->show();
378 auto subSplit3D =
new QSplitter(mainSplit);
379 QList<int> splitterSize;
381 for (
const auto& renderWindowWidget : all3DRenderWindowWidgets)
383 subSplit3D->addWidget(renderWindowWidget.second.get());
384 renderWindowWidget.second->show();
385 splitterSize.push_back(1000);
387 subSplit3D->setSizes(splitterSize);
390 splitterSize.clear();
391 splitterSize.push_back(1000);
392 splitterSize.push_back(1000);
393 mainSplit->setSizes(splitterSize);
398 for (
auto& renderWindow : allRenderWindows)
406 MITK_INFO <<
"Set one left and all 3D right layout" << std::endl;
410 delete m_MultiWidget->layout();
412 auto hBoxLayout =
new QHBoxLayout(m_MultiWidget);
413 hBoxLayout->setContentsMargins(0, 0, 0, 0);
414 m_MultiWidget->setLayout(hBoxLayout);
415 hBoxLayout->setMargin(0);
417 auto mainSplit =
new QSplitter(m_MultiWidget);
418 hBoxLayout->addWidget(mainSplit);
420 mainSplit->addWidget(m_CurrentRenderWindowWidget);
421 m_CurrentRenderWindowWidget->show();
423 auto subSplit3D =
new QSplitter(Qt::Vertical, mainSplit);
424 QList<int> splitterSize;
426 for (
const auto& renderWindowWidget : all3DRenderWindowWidgets)
428 subSplit3D->addWidget(renderWindowWidget.second.get());
429 renderWindowWidget.second->show();
430 splitterSize.push_back(1000);
432 subSplit3D->setSizes(splitterSize);
435 splitterSize.clear();
436 splitterSize.push_back(1000);
437 splitterSize.push_back(1000);
438 mainSplit->setSizes(splitterSize);
443 for (
auto& renderWindow : allRenderWindows)
451 MITK_INFO <<
"Set default layout" << std::endl;
455 delete m_MultiWidget->layout();
457 auto hBoxLayout =
new QHBoxLayout(m_MultiWidget);
458 hBoxLayout->setContentsMargins(0, 0, 0, 0);
459 m_MultiWidget->setLayout(hBoxLayout);
460 hBoxLayout->setMargin(0);
462 auto mainSplit =
new QSplitter(m_MultiWidget);
463 hBoxLayout->addWidget(mainSplit);
465 QList<int> splitterSize;
467 for (
const auto& renderWindowWidget : allRenderWindowWidgets)
469 if (
nullptr != renderWindowWidget.second)
471 mainSplit->addWidget(renderWindowWidget.second.get());
472 renderWindowWidget.second->show();
473 splitterSize.push_back(1000);
478 mainSplit->setSizes(splitterSize);
483 for (
auto& renderWindow : allRenderWindows)
491 MITK_INFO <<
"Set all vertical" << std::endl;
495 delete m_MultiWidget->layout();
497 auto hBoxLayout =
new QHBoxLayout(m_MultiWidget);
498 hBoxLayout->setContentsMargins(0, 0, 0, 0);
499 m_MultiWidget->setLayout(hBoxLayout);
500 hBoxLayout->setMargin(0);
502 auto mainSplit =
new QSplitter(Qt::Vertical, m_MultiWidget);
503 hBoxLayout->addWidget(mainSplit);
505 QList<int> splitterSize;
507 for (
const auto& renderWindowWidget : allRenderWindowWidgets)
509 mainSplit->addWidget(renderWindowWidget.second.get());
510 renderWindowWidget.second->show();
511 splitterSize.push_back(1000);
515 mainSplit->setSizes(splitterSize);
520 for (
auto& renderWindow : allRenderWindows)
528 MITK_INFO <<
"Remove single render window" << std::endl;
532 m_CurrentRenderWindowWidget->hide();
537 for (
auto& renderWindow : allRenderWindows)
MITK implementation of the QVTKWidget.