我继承了一个基于QWidget的Editor类的Qt代码库。编辑器设置为自动使用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年前 - “QSpacerItem In QFormLayout - Vertical Expand” - 有一个有趣的回复涉及“通过将[HBXLayout放入QWidget”中的一层间接“,但我无法弄清楚如何尝试根据给出的描述,并没有足够的声誉发表评论要求详细信息(无论如何,这对于一个老的线程可能是徒劳的。)
那么 - 有没有人知道如何通过finagle QFormLayout来允许我的m_view填充可用的高度和宽度?