我继承了 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 填充可用的高度和宽度?