2017-06-05 127 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造成垂直收縮標籤不minimumHeight/fixedHeight,在這裏我希望它自由擴展到父
  3. 的高度變化minimumHeight或加入padding/margin:,這隻會繼續向下移動QLabel

Described above

我的最終目標是要建立固定的高度和可變寬度的條(照片中的暗藍色的東西),與標籤和按鈕(如標題,關閉,最大化等)對齊在兩邊,不管酒吧的寬度。

因特網和說,增加另一個QBoxLayout居中Label垂直可以解決這個問題,但我會加入大量的組件是吧,所以這個「解決方案」將是非常不切實際的。

TL; DR:如何在水平佈局中將Label(或其文本)垂直對齊?

+0

@ G.M。正如我的文章所述,使用alignment屬性並不是很有幫助,結果如圖所示。 – 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