【发布时间】:2018-09-25 07:10:55
【问题描述】:
我正在构建一个基于 QGraphicsWidget 的自定义小部件
在小部件内部,我需要与窗口大小一致的各种其他小部件。为此,我正在使用
Layout = new QGraphicsLinearLayout();
Layout->setOrientation(Qt::Horizontal);
setLayout(Layout);
所以我有一个布局,并且在布局的每一侧都有一个小部件。所以左侧有一个小部件,右侧有一个小部件。
QGraphicsLinearLayout() below
500 px wide x
|--------------------------------|
| |
|left widget right widget| 100 px tall y
|--------------------------------|
我想要当窗口变大时,小部件保持在边缘 x 像素内的行为。因此,如果将窗口的大小调整为 10,000 像素宽,则左侧小部件始终距离左边缘 1 像素,右侧小部件始终距离右边缘 1 像素。
10000 px wide x
|---------------------------------------------------|
| |
|left widget right widget| 100 px tall y
|---------------------------------------------------|
当前的行为是左侧小部件将保持原位并且永远不会移动,而右侧小部件将远离右侧边缘。
为了实现这种行为,我尝试了以下方法:
Layout->setAlignment(leftWidget, Qt::AlignLeft);
这完全没有任何作用。
我也试过
Layout->addItem(leftWidget);
Layout->setStretchFactor(leftWidget, 0);
Layout->addItem(rightWidget);
这会产生预期的效果,但会像这样将 rightWidget 与边框重叠
500 px wide x
|--------------------------------|
| |
|left widget right widget 100 px tall y
|--------------------------------|
那么我怎样才能得到我想要的行为呢?到目前为止,QLayouts 看起来很混乱,而且 API 具有误导性。
【问题讨论】: