在水平布局中垂直居中标签

Centering a Label vertically in a horizontal layout

我的 QLabelQHBoxLayout 中垂直居中时遇到一些问题。我的相关代码如下:

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 的情况下垂直收缩,我希望它可以自由扩展到 [= 的高度50=]
  3. 更改 minimumHeight 或添加 padding/margin:,只会继续向下移动 QLabel

我的最终目标是创建一个固定高度和可变宽度的栏(照片中的深蓝色东西),标签和按钮(例如标题、关闭、最大化等)在两侧对齐,无论栏的宽度。

网上说再添加一个 QBoxLayout 使 Label 垂直居中可以解决问题,但我会在那个栏中添加很多组件,所以这个 "solution" 会非常不切实际。

TL;DR:如何在水平布局中垂直对齐 Label(或简称其文本)?

尝试更改 top/bottom 布局边距并保持 Qt::AlignVCenter:

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