1. 使用QSpaceritem填充布局的多余部分,但当试图 delete QSpaceritem 对象时,程序就出错。代码如下:
1: QHBoxLayout *layout = new QHBoxLayout();
2: QSpacerItem *spacer = new QSpacerItem();
3: layout ->addItem(spacer);
4: spacerList.append(spacer);
5:
6: ...
7:
8: while(!spacerList.isEmpty())
9: {
10: delete spacerList.takeFirst();
11: }
为什么会这样呢?
PS: 会删除spacer是因为这些是动态生成的,在同一个Layout里面切换内容时,需要删除掉Layout本来的内容。
2. 因为上面问题还没有解决,所以使用了另一种方法:
1: QWidget* spacer = new QWidget();
2: spacer->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
创建上面一个 widget 来代替 spacer, Lucky, it works perfectly.