1

我有两个示例,我基本上是在创建包装器对象,而不是理想情况下的简单转换。

如果fooQWidget*较早实例化的,我可以避免QLayout为它创建一个包装器:

const auto layout = new QVBoxLayout();
layout->addWidget( foo );
const auto frame = new QLabel( QLatin1String( "Why Do I Need a Layout?" ) );
frame->setLayout( layout );

如果fooQLayout*较早实例化的,我可以避免QWidget为它创建一个包装器:

const auto widget = new QWidget();
widget->setLayout( foo );
const auto tabs = new QTabWidget();
tabs->addTab( widget, QLatin1String( "Why Do I Need a Widget?" ) );
4

2 回答 2

2

总是可以编写自己的包装函数:

QLayout* wrap(QWidget* w){
    auto layout = new QVBoxLayout();
    layout->addWidget( w );
    return layout;
}
QWidget* wrap(QLayout* l){
    auto widget = new QWidget();
    widget->setLayout( l );
    return widget;
}
于 2014-06-17T14:00:05.783 回答
1

小部件不必有布局。您可以通过将小部件设置为其父小部件来将子小部件添加到小部件。但随后您将不得不手动调整子小部件的大小和位置。

于 2014-06-24T12:05:37.310 回答