2011-09-14 1 views
2

にそれをしたくない場合でも、サイズを変更します。メニューアイテムウィジェットは、QHBoxLayoutを持つQWidgetといくつかのQLabelで構成されています。QLayout力親QWidgetの私は、私は私自身のカスタムメニュー項目のウィジェットのインスタンスが移入されQListWidgetを使用してい

私はQHBoxLayoutはそれが内に含まれるラベルに合うように、私のウィジェットの高さを縮小し、私のウィジェットのサイズを引き継ぐように見えることを除いて、すべてのものに満足しています。私は、メニュー項目のウィジェットを一定のサイズにして、QHBoxLayoutに子を水平に配置させて、それがウィジェットの高さを引き継ぐことを夢中にしています!

誰にもアイデアはありますか?私は好きQWidgetの私のメニュー項目で物事を試してみた:10は無視(と拡張)と30が固定とどまることになることを期待して

this->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); 
this->resize(10, 30); 

が、ウィジェットははるかに小さいサイズであり続けています。

ありがとうございます!

マーロン

答えて

0

だから基本的に、あなたはQlabelsが完了ウィジェットQHBoxLayoutにしていないことをしたいですか? (QHBoxLayoutとメニューアイテムウィジェットを設定していない)

+0

私は実際にそれを行う方法を考え出しました。 I 0にQHBoxLayoutマージンを設定: レイアウト - > setContentsMargins(5、0、0、0);次いで 30にラベルの最大値と最小高さを設定: ラベル=> setMaximumHeight(30)。 label-> setMinimumHeight(30); レイアウトはまだ私のウィジェットのラベルの高さに合わせてサイズ変更していますが、ラベル自体が私が望む "パディング"スペースを提供しています。 レイアウトが親ウィジェットのサイズを引き継いだのはまだ変わっているようですが、まあまあです。 –

+0

レイアウトは、親ではなく子にのみ適用する必要があります。たぶんあなたの親が含まれている別のレイアウトを持っているかもしれない – blueskin

+0

ええ、それは奇妙です。子供たちに適用されていますが、親のサイズを変更して子供に合わせることができます。しかし、助けてくれてありがとう。 –

0

テストされていないそのような場合、あなたは単にQHBoxLayoutにのみQLabelsを追加し、メニュー項目のウィジェットに追加することができ、おそらくアイデア:layout->setSizeConstraint(QLayout::SetNoConstraint)おそらくwidget->setFixedHeight()と組み合わせて使用​​します。がんばろう!

1

は、サイズ変更 - ウィジェットのジオメトリを変更する - あなたはFixedサイズポリシーを使用する方法ではありません。 QSize sizeHint() constの再実装で固定サイズを指定する必要があります。あなたのウィジェットに以下を追加します。

class MyWidget : public QWidget { 
... 
protected: 
    QSize sizeHint() const { return QSize(10, 30); } 
... 
}; 

パーQtの非常に自身のドキュメント:

QSizePolicy::Fixed QWidget::sizeHint()は許容できる選択肢ですので、ウィジェットが成長したり縮小しないことができます(たとえばの垂直方向ボタンを押す)。

関連する問題