2017-06-05 22 views
0

QLabelを垂直方向に中心に置くことに少し問題があります。QHBoxLayout。私のコードの関連部分は以下の通りです:ラベルを縦に横向きに配置する

QFrame* topBar = new QFrame(); 
topBar->setStyleSheet("background-color: #2c3d50;border-bottom: 3px solid #2c92b6;"); 
topBar->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed); 
topBar->setFixedHeight(24); 

QHBoxLayout* topBarLayout = new QHBoxLayout(); 
    QLabel* label = new QLabel("MSFT"); 
    label->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Preferred); 
    label->setStyleSheet("font-size: 15px;font-weight: bold;border: 0px;"); 
    label->setMinimumHeight(15); 
    topBarLayout->addWidget(label); 

topBar->setLayout(topBarLayout); 
topLayout->addWidget(topBar); 

私の地元の目標は、ラベルが垂直を中心に持ってです。私が試したもの:

  1. Qt::AlignVCenter

    - 影響を与えなかったが
  2. QSizePolicy::PreferredSizeQSizePolicy::Expandingはラベルが縦に私はそれを変更する親
  3. の高さに自由に膨張することを望んだminimumHeight/fixedHeight、なしに縮小される原因となりましたminimumHeightまたはpadding/margin:を追加します。これは、QLabelを下向きに移動し続けます。

Described above

私の究極の目標は、整列(などを最大化、クローズ例えばキャプション、)ラベルとボタンで、固定の高さと可変幅のバー(写真ではその暗い青色のもの)を作成することですバーの幅にかかわらず、両側にあります。

インターネットでは、を垂直方向に中心に追加すると問題が解決する可能性がありますが、このバーには多くのコンポーネントが追加されるため、この「解決策」は非常に実用的ではありません。

TL:DR:Label(または単にテキスト)を水平レイアウト内でどのように垂直に整列させますか?

+0

G.M @。私の郵便局の状態では、整列プロパティを使用することはあまり役に立ちませんでした。結果は図に示されています。 – user35443

+0

@GCyrillusこれはQtですが、HTMLは生成されず、スタイルシートは上記のコード抜粋に含まれています。 – user35443

+0

'setSizePolicy'への呼び出しを単に削除するとどうなりますか? –

答えて

2

は、レイアウトのトップ/ボトム余白を変更し、Qt::AlignVCenterを保つようにしてください:

topBarLayout->setContentsMargins(9,0,9,5); 
+1

私がテストしたところでは、これはデフォルトでは垂直に配置されていたので、 'Qt :: AlignVCenter'は必要ありませんでした。 – ymoreau

+0

ありがとう、これは働いた。 @ymoreauが述べたように、 'Qt :: AlignVCenter'は必要ではありませんでした。 – user35443

関連する問題