0

我想创建一个灵活的布局,用户可以在其中调整小部件的大小,但仍然提供良好的默认布局。我正在使用 Qt Designer 来完成所有工作。

作为一个最小的例子,我使用了一个带有 Widget 和 plainTextEdit 的简单 Windows。后者似乎会导致问题,这就是我选择它的原因。起初,我在没有使用 Splitter 的情况下构建它,效果很好。顺便说一下,拉伸因子是 1:1。

在此处输入图像描述

现在我将两个小部件都放在一个拆分器中(通过打破主布局,将两个小部件放在一个拆分器中,并为主小部件设置一个新布局)。调整大小仍然有效,但拉伸因素表现得很奇怪:

在此处输入图像描述

PlainTextEdit 似乎占用了很多空间。拉伸因子仍为 1:1。我找到了一个工作方法,通过将上部小部件的拉伸更改为更高的值(在本例中为 9:1),这看起来又不错了:

在此处输入图像描述

所以我的问题是:为什么当我将图像放入分离器时,拉伸因子开始表现得很奇怪?我怎样才能在不使用任意猜测的拉伸因子的情况下解决这个问题?

4

1 回答 1

4

QSplitter::setSizes()可用于设置相对大小。根据文档,“任何额外/缺失的空间都根据尺寸的相对权重分布在小部件之间”。

在这种情况下,它有点难看,因为您必须在代码中添加它而不是在 QDesigner 中编辑布局(通常,您只想在一个地方定义布局),但它仍然快速且有效:

MyWindow::MyWindow(QWidget* parent):
QWidget(parent)
{
    m_Ui.setupUi(this);
    m_Ui.splitter->setSizes({2000, 1000, 1000});

但是,我不得不使用大数字(而不是 {2, 1, 1}),可能是因为此时窗口还没有完全设置好(显然,Qt 不是 RAII 的忠实粉丝......)。此外,这种表示法可能仅适用于最近的 C++ 版本,否则您还可以在一些额外的行中定义 QList。

于 2015-04-13T11:12:55.610 回答