Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 无法在QFormLayout中获取QGraphicsView以垂直展开_Qt_Qgraphicsview_Qlayout - Fatal编程技术网

Qt 无法在QFormLayout中获取QGraphicsView以垂直展开

Qt 无法在QFormLayout中获取QGraphicsView以垂直展开,qt,qgraphicsview,qlayout,Qt,Qgraphicsview,Qlayout,我继承了一个Qt代码库,其中包含一个基于QWidget的编辑器类。编辑器被设置为自动使用QFormLayout作为其布局,并且如此多的相关代码假设QFormLayout,以至于我无法实际地为另一个布局重新编码 问题-我正在使用的编辑器将有一个交互式QGraphicsView,它应该调整大小以填充编辑器的空间。不幸的是,它只会水平调整大小,而不会垂直调整大小。QGraphicsView(由QGraphicsView*m_视图引用)添加到布局中,如下所示: void EditorSubclass::

我继承了一个Qt代码库,其中包含一个基于QWidget的编辑器类。编辑器被设置为自动使用QFormLayout作为其布局,并且如此多的相关代码假设QFormLayout,以至于我无法实际地为另一个布局重新编码

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

void EditorSubclass::initialize(...)
{
    ...
    QFormLayout* fl = qobject_cast<QFormLayout*>(this->layout());
    ...
    fl->addRow(m_view); // m_view is an instance of a QGraphicsView subclass
    ...
}
void EditorSubclass::initialize(…)
{
...
QFormLayout*fl=qobject_cast(此->布局());
...
fl->addRow(m_视图);//m_视图是QGraphicsView子类的一个实例
...
}
(编辑器类设置布局,这就是为什么这个子类只是检索布局,而不是创建一个新布局)

m_视图是唯一添加到QFormLayout的内容。我试着让它垂直扩展,使用大小提示、大小策略、大小限制、字段增长策略的多种组合——你可以说。无论我做什么,m_视图都会将其高度调整为为为其设置的最小大小(如果我不使用setMinimumSize或setMinimumHeight,则为75像素)。我检查了继承的编辑器类,但它没有做任何影响大小的事情

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


那么-有人知道有什么方法可以欺骗QFormLayout,让我的m_视图填充可用的高度和宽度吗?

嗨,如果m_视图真的是QFormLayout中唯一的小部件(或任何其他布局类型),你的m_视图小部件应该填充它的父小部件(EditorSubclass)。如果不是,唯一的可能性就是在某处添加一个大小约束(在代码中或使用Qt设计器)。只需尝试使用其他新的随机小部件,以确保问题来自m_view小部件本身。问题似乎不在m_视图中,因为我尝试使用其他小部件(单独使用或组合使用),它们不会填充可用空间,只会填充指定的最小高度。我基本上有一个类似的问题,虽然我至少解决了部分问题。。。