在QLayout和QWidget之间转换

时间:2014-06-17 11:27:41

标签: c++ qt qwidget qlayout

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

如果前面已foo QWidget*实例化,我是否可以避免为其创建包装QLayout

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

如果前面已foo QLayout*实例化,我是否可以避免为其创建包装QWidget

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

2 个答案:

答案 0 :(得分:1)

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

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;
}

答案 1 :(得分:1)

小工具不必具有布局。您可以通过将窗口小部件设置为其父窗口,将子窗口小部件添加到窗口小部件。但是,您必须手动调整子窗口小部件的大小和位置。