Core: Introduce a IOptionsPage::setLayout(const LayoutItem)

Helps to move the lambda setup off the user code.

Change-Id: I0de43f53fc9018913340e81b5c1e8e69df067bd6
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
hjk
2023-05-09 18:08:46 +02:00
parent f9fd83df9a
commit e206ed5236
2 changed files with 12 additions and 0 deletions

View File

@@ -9,6 +9,7 @@
#include <coreplugin/icore.h> #include <coreplugin/icore.h>
#include <utils/aspects.h> #include <utils/aspects.h>
#include <utils/layoutbuilder.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
#include <utils/stringutils.h> #include <utils/stringutils.h>
@@ -204,6 +205,14 @@ void IOptionsPage::setLayouter(const std::function<void(QWidget *w)> &layouter)
m_layouter = layouter; m_layouter = layouter;
} }
void IOptionsPage::setLayout(const Layouting::LayoutItem &layout)
{
using namespace Layouting;
m_layouter = [layout](QWidget *widget) {
Column { Row { Column { layout, st }, st } }.attachTo(widget);
};
}
/*! /*!
\fn void Core::IOptionsPage::setId(Utils::Id id) \fn void Core::IOptionsPage::setId(Utils::Id id)

View File

@@ -16,6 +16,8 @@
#include <functional> #include <functional>
namespace Layouting { class LayoutItem; };
namespace Utils { class AspectContainer; }; namespace Utils { class AspectContainer; };
namespace Core { namespace Core {
@@ -73,6 +75,7 @@ protected:
void setCategoryIconPath(const Utils::FilePath &categoryIconPath); void setCategoryIconPath(const Utils::FilePath &categoryIconPath);
void setSettings(Utils::AspectContainer *settings); void setSettings(Utils::AspectContainer *settings);
void setLayouter(const std::function<void(QWidget *w)> &layouter); void setLayouter(const std::function<void(QWidget *w)> &layouter);
void setLayout(const Layouting::LayoutItem &layout);
// Used in FontSettingsPage. FIXME? // Used in FontSettingsPage. FIXME?
QPointer<QWidget> m_widget; // Used in conjunction with m_widgetCreator QPointer<QWidget> m_widget; // Used in conjunction with m_widgetCreator