2

カレンダー アプリを作成していて、予定の表示と編集が完了しました。基本的にQVBoxLayoutは、viewlayout と editlayout が含まれており、信号を使用してビューまたは編集を表示または非表示にします。

それは問題なく動作しますが、1 つの問題があります。viewlayout には、追加のスペース用の 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 に答える