Utils/Core: Make an aspect container layoutable

Most aspect containers end in a widget at some time. Let them declare
how.

The optionspages don't need a layouter anymore when using their
settings' one. There was only one case where there was none, fix
that one (perforce).

Change-Id: Ibd39bcd4af98c3eae1daafa59f6c1d6e7a571989
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
hjk
2023-06-21 18:13:56 +02:00
parent 03aeee71f4
commit 091b853068
5 changed files with 85 additions and 74 deletions

View File

@@ -136,6 +136,13 @@ QWidget *IOptionsPage::widget()
if (!m_widget) {
if (m_widgetCreator) {
m_widget = m_widgetCreator();
} else if (m_settings) {
m_widget = new IOptionsPageWidget;
if (auto layouter = m_settings->layouter()) {
layouter().attachTo(m_widget);
} else {
QTC_CHECK(false);
}
} else {
QTC_CHECK(false);
}
@@ -199,15 +206,6 @@ void IOptionsPage::setSettings(AspectContainer *settings)
m_settings = settings;
}
void IOptionsPage::setLayouter(const std::function<Layouting::LayoutItem ()> &layouter)
{
m_widgetCreator = [layouter] {
auto widget = new IOptionsPageWidget;
layouter().attachTo(widget);
return widget;
};
}
/*!
\fn void Core::IOptionsPage::setId(Utils::Id id)