我如何更换物品和垫片?

时间:2014-08-26 09:25:37

标签: qt alignment visibility

在qt中,我有一个表格,其中包含一个

  • 组合框
  • 一个复选框
  • a spacer
  • 一个按钮 根据一些逻辑,我希望有时会显示另一个组合框...间隔符在哪里,但更小。

当我添加它时,一切都会自动调整大小

我没有看到让它变得不可见的方法,但是当我再次看到它时保持相同尺寸的物品。

我尝试将其固定尺寸...但除非我使用固定尺寸和定位所有内容,我认为这是一个坏主意,当我改变可见度时,项目仍会移动。

看起来很傻......但是我怎样才能让我的小组合框显示而不是旁边的间隔?间隔物似乎没有名称......

我愿意

combo.setVisible(condition);
Spacer.setVisible(!condition);

非常简单......除了如何从代码访问spacer?

1 个答案:

答案 0 :(得分:2)

我的建议是使用容器QWidget而不是间隔符。以下是它的外观:

A combo box
a checkbox
a widget-container
a button 

Widget-container是QWidget固定大小。把你的组合框放在那里,当你显示/隐藏组合框时它会保持它的大小。

关于你的问题(你不需要它,但只是为了将来知道):

  

如何从代码

访问spacer

您可以使用以下代码创建间隔符:

QSpacerItem* spacer = new QSpacerItem(0, 15, QSizePolicy::Fixed, QSizePolicy::Fixed);
layout->addItem(spacer);
...

如果您知道其索引,也可以从布局中获取它:

QLayoutItem* item = layout->itemAt(index);

但布局项目没有show/hide这样的方法。