C++ Qt布局问题

C++ Qt布局问题,c++,qt,layout,C++,Qt,Layout,我有以下Qt代码: QVBoxLayout* box = new QVBoxLayout; label = new QLabel(); // will be set later dynamically box->addWidget (label); 稍后将设置标签中的文本。 问题是,当标签调整大小时,它会调整QVBoxLayout的大小,并调整其他相邻小部件的大小。 我不想使标签或布局固定宽度。因为我想让它们调整整个窗口的大小 是否可以告诉小部件占据版面中的所有位置,但不能占据更多位置?

我有以下Qt代码:

QVBoxLayout* box = new QVBoxLayout;
label = new QLabel(); // will be set later dynamically
box->addWidget (label);
稍后将设置标签中的文本。 问题是,当标签调整大小时,它会调整QVBoxLayout的大小,并调整其他相邻小部件的大小。 我不想使标签或布局固定宽度。因为我想让它们调整整个窗口的大小


是否可以告诉小部件占据版面中的所有位置,但不能占据更多位置?

您可以设置a或查看。

您可以设置a或查看。

我认为您需要为正在放置版面的主窗口设置拉伸因子()。

我认为您需要设置拉伸因子()对于主窗口,您正在放置布局。

也许您可以查看以下方法:

- void setScaledContents(bool)
- void setWordWrap(bool on)

我希望它符合你的要求

也许你可以看看以下方法:

- void setScaledContents(bool)
- void setWordWrap(bool on)

我希望它符合你的要求

您是否尝试过修改小部件的名称?你可以用这个完成你想要的


以下是所有大小策略:

您是否尝试修改小部件的大小?你可以用这个完成你想要的


以下是所有尺寸政策:

Łukasz,我是否正确理解您希望标签始终填充一行的空间?如果是这样,如果文本只有一行,那么解决方案就是:


QVBoxLayout*框=新的QVBoxLayout
标签=新的QLabel(“”;//该空间将在布局中创建垂直空间
框->添加小部件(标签);

“空”标签现在的行为与设置文本后的行为完全相同


但我必须承认,我不确定我是否真正理解你的问题。你能说得更具体一点,或者提供你想要完成的任务的屏幕截图吗?

Łukasz,我是否正确地理解你希望标签一直占据一行的空间?如果是这样,如果文本只有一行,那么解决方案就是:


QVBoxLayout*框=新的QVBoxLayout
标签=新的QLabel(“”;//该空间将在布局中创建垂直空间
框->添加小部件(标签);

“空”标签现在的行为与设置文本后的行为完全相同


但我必须承认,我不确定我是否真正理解你的问题。您可以更具体一点,或者提供您想要完成的任务的屏幕截图吗?

正如我所说,我不想设置最大大小。早些时候,我深入研究了大小策略,但不知道如何使用它。正如我所说,我不想设置最大大小。早些时候,我仔细研究了尺码政策,但不知道如何使用。好主意。我将主布局中的box和其他小部件的StretchFactor设置为0。但没有效果:(将拉伸因子设置为0意味着布局拉伸是根据其他小部件自动计算的。例如,如果布局中有一个按钮和一个标签,并将每个元素的拉伸因子设置为0,则每个小部件的大小是自动分配的。如果将100;1;设置为拉伸因子,则每个小部件的大小将为100%e小部件的大小。好主意。我将主布局中box和其他小部件的StretchFactor设置为0。但没有效果:(将拉伸因子设置为0意味着布局拉伸是根据其他小部件自动计算的。例如,如果布局中有一个按钮和一个标签,并将每个元素的拉伸因子设置为0,则每个小部件的大小是自动分配的。如果将100;1;设置为拉伸因子,则每个小部件的大小将为100%小部件的大小。你能提供一个完整的例子吗?你能提供一个完整的例子吗?哪个策略实现了我想要的?使用QSizePolicy::Maxim策略并将标签的大小点设置为布局空间大小。因此标签将被限制在布局中的空间内。哪个策略实现了我想要的?使用QSizePolicy::Maximum策略,并将标签的sizeHint设置为版面空间大小。因此标签将限制在版面中的空间内。