1

我继承了 Qt 代码库和基于 QWidget 的 Editor 类。编辑器设置为自动使用 QFormLayout 作为其布局,并且很多相关代码都假定了 QFormLayout,以至于我实际上无法为另一个布局重新编码。

问题 - 我正在处理的编辑器将有一个交互式 QGraphicsView 应该调整大小以填充编辑器的空间。不幸的是,它只会水平调整大小,而不是垂直调整。将 QGraphicsView(由 QGraphicsView *m_view 引用)添加到布局中,如下所示:

void EditorSubclass::initialize(...)
{
    ...
    QFormLayout* fl = qobject_cast<QFormLayout*>(this->layout());
    ...
    fl->addRow(m_view); // m_view is an instance of a QGraphicsView subclass
    ...
}

(Editor 类设置布局,这就是为什么这个子类只是检索它而不是创建一个新的)

m_view 是唯一添加到 QFormLayout 的东西。我已经尝试使用大小提示、大小策略、大小限制、字段增长策略的多种组合来让它垂直扩展 - 你可以说出来。无论我做什么,m_view 都会将其高度调整为为其设置的最小尺寸(如果我不使用 setMinimumSize 或 setMinimumHeight,则为 75 像素)。我检查了继承的 Editor 类,但它没有做任何影响大小调整的事情。

我读过其他类似的问题,QFormLayout 行不垂直调整大小是正常行为。变通方法往往涉及使用不同的布局,但这不是一个现实的选择。2-1/2 年前提出的一个问题 - “ QFormLayout 中的 QSpacerItem - Vertical Expand ” - 有一个有趣的回答,涉及“通过将 [an] HBoxLayout 放入 QWidget 的间接层”,但我不知道如何从给定的描述中尝试一下,并且没有足够的声誉来发表评论询问详细信息(无论如何这在旧的线程上可能是徒劳的)。

那么 - 有没有人知道一种方法可以让 QFormLayout 允许我的 m_view 填充可用的高度和宽度?

4

0 回答 0