【发布时间】:2014-06-17 11:27:41
【问题描述】:
我有两个示例,我基本上是在创建包装对象,而不是理想情况下的简单转换。
如果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?" ) );
【问题讨论】:
-
我不确定你在问什么,或者你想要实现什么。能否补充一些细节?
-
layout是一个包装器,我不需要QLayout,它没有任何作用,但我不能调用frame->setWidget( foo );因为QLabel没有那个功能。我在问是否有一种方法可以跳过layout包装器。widget包装器也是如此。 -
澄清一下:您想在不添加 Layout 的情况下将子组件添加到 Widget,并且希望将 Layout 添加为预期 QWidget 的子组件?
-
小部件不必有布局。您可以通过将其设置为父小部件来添加子小部件,但是您必须手动调整子小部件的大小和位置。
-
@JonathanMee 是的,这是关于第一个案例。我并不是说它会实现相同的行为。就像我说的,您必须手动调整子小部件的大小和位置。