我在一个QWidget
内有一些QDockWidget
s(不浮动,只能关闭)。 我在每个QDockWidget
里都有一些小部件 - 它们的高度应该相等。 这些内部小部件可以通过上下文菜单隐藏。如何让Qt subwidget高度相等?
我的内部小工具应该有相同的高度。我做这样说:
void MyDocksPanel::redistributeSpace()
{
QBoxLayout * lay = (QBoxLayout *)layout();
for (int i = 0; i < lay->count(); i++)
{
QWidget * dock = lay->itemAt(i)->widget();
if (dock == NULL)
continue;
int size = 0;
foreach(QWidget * subWidget, dock->findChildren<QWidget*>())
size += subWidget->isVisible() ? 1 : 0;
if (dock->isVisible() && (size == 0))
dock->hide();
lay->setStretch(i, size);
}
}
一切工作正常,直到我加入一些常量元素,每个QDockWidget
:一些水平滚动条和一些唱片公司......现在我内心的部件具有不同的尺寸。但我有必要将他们的高度大致相等。
QLayout
勾画出一个小部件的层次结构的一个级别部件尺寸。我怎样才能让高度相等的子装置?
3 subwidgets对2个subwidgets
我的第一个策略设置拉伸部3和2:
但是,当我增加了滚动条:
我的5个小工具的高度等于37,37,37,28,28 ...那就是问题
我是否也应该添加QDockWidget的标题高度和边距* 2以及子项和滚动条之间的间距? – k06a 2012-04-23 19:01:29
我的猜测是肯定的,你应该。 :)但尝试它没有这样做,看看它是否工作。 – Anthony 2012-04-23 19:04:08
两天前我试过这种方式。没有成功。我明天再试一次。我有问题与childWidgetMinimumHeight - 我想调整整个小部件手动... – k06a 2012-04-23 19:48:54