2

我正在创建一个日历应用程序,刚刚完成了约会视图和编辑。基本上它是一个QVBoxLayout带有 viewlayout 和 editlayout 的,我使用信号隐藏和显示视图或编辑。

效果很好,有一个问题:在视图布局中,我有一个 QSpacerItem 用于一些额外的间距,并且为了在查看编辑部分时删除空间,我更改了它的大小。

像这样

if( show_view_hide_edit )
    spacer->changeSize(1, 60, QSizePolicy::Expanding, QSizePolicy::Fixed );
else
    spacer->changeSize(0, 0, QSizePolicy::Fixed, QSizePolicy::Fixed );

此代码在小部件显示时以及当我将其交换为“编辑”时有效。当我将其切换回视图然后返回编辑时,间距位于屏幕顶部。它不应该真的在那里。图像显示发生了什么。(链接到图片的大小

在此处输入图像描述

4

1 回答 1

4

如果没有您的小部件的构造代码,很难猜测发生了什么。您是否尝试过使用 QBoxLayout::insertSpacing ( int index, int size ) 和 QLayout::removeItem ( QLayoutItem * item ) 插入/删除 SpacerItems?

改变大小后你有没有调用 QLayout::invalidate () ?

于 2012-08-01T12:49:37.293 回答