forked from qt-creator/qt-creator
Utils: Emerge widgets from LayoutItem
This allows us to call e.g. PushButton{}.emerge(); without having to
add another unnecessary layout.
Change-Id: Ica26f4776dee1843e1f40c238e1f3c1a54d14ea5
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
@@ -573,9 +573,26 @@ void LayoutItem::attachTo(QWidget *w) const
|
||||
|
||||
QWidget *LayoutItem::emerge()
|
||||
{
|
||||
auto w = new QWidget;
|
||||
attachTo(w);
|
||||
return w;
|
||||
LayoutBuilder builder;
|
||||
|
||||
builder.stack.append(Slice());
|
||||
addItemHelper(builder, *this);
|
||||
|
||||
if (builder.stack.empty())
|
||||
return nullptr;
|
||||
|
||||
QTC_ASSERT(builder.stack.last().pendingItems.size() == 1, return nullptr);
|
||||
ResultItem ri = builder.stack.last().pendingItems.takeFirst();
|
||||
|
||||
QTC_ASSERT(ri.layout || ri.widget, return nullptr);
|
||||
|
||||
if (ri.layout) {
|
||||
auto w = new QWidget;
|
||||
w->setLayout(ri.layout);
|
||||
return w;
|
||||
}
|
||||
|
||||
return ri.widget;
|
||||
}
|
||||
|
||||
static void layoutExit(LayoutBuilder &builder)
|
||||
@@ -861,6 +878,17 @@ LayoutItem title(const QString &title)
|
||||
};
|
||||
}
|
||||
|
||||
LayoutItem windowTitle(const QString &windowTitle)
|
||||
{
|
||||
return [windowTitle](QObject *target) {
|
||||
if (auto widget = qobject_cast<QWidget *>(target)) {
|
||||
widget->setWindowTitle(windowTitle);
|
||||
} else {
|
||||
QTC_CHECK(false);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
LayoutItem text(const QString &text)
|
||||
{
|
||||
return [text](QObject *target) {
|
||||
|
||||
Reference in New Issue
Block a user