在水平布局中垂直居中标签
Centering a Label vertically in a horizontal layout
我的 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);
我的本地目标是让标签垂直居中。我尝试了什么:
Qt::AlignVCenter
- 没有影响
QSizePolicy::PreferredSize
和 QSizePolicy::Expanding
导致标签在没有 minimumHeight
/fixedHeight
的情况下垂直收缩,我希望它可以自由扩展到 [= 的高度50=]
- 更改
minimumHeight
或添加 padding/margin:
,只会继续向下移动 QLabel
。
我的最终目标是创建一个固定高度和可变宽度的栏(照片中的深蓝色东西),标签和按钮(例如标题、关闭、最大化等)在两侧对齐,无论栏的宽度。
网上说再添加一个 QBoxLayout
使 Label
垂直居中可以解决问题,但我会在那个栏中添加很多组件,所以这个 "solution" 会非常不切实际。
TL;DR:如何在水平布局中垂直对齐 Label
(或简称其文本)?
尝试更改 top/bottom 布局边距并保持 Qt::AlignVCenter
:
topBarLayout->setContentsMargins(9,0,9,5);
我的 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);
我的本地目标是让标签垂直居中。我尝试了什么:
Qt::AlignVCenter
- 没有影响QSizePolicy::PreferredSize
和QSizePolicy::Expanding
导致标签在没有minimumHeight
/fixedHeight
的情况下垂直收缩,我希望它可以自由扩展到 [= 的高度50=]- 更改
minimumHeight
或添加padding/margin:
,只会继续向下移动QLabel
。
我的最终目标是创建一个固定高度和可变宽度的栏(照片中的深蓝色东西),标签和按钮(例如标题、关闭、最大化等)在两侧对齐,无论栏的宽度。
网上说再添加一个 QBoxLayout
使 Label
垂直居中可以解决问题,但我会在那个栏中添加很多组件,所以这个 "solution" 会非常不切实际。
TL;DR:如何在水平布局中垂直对齐 Label
(或简称其文本)?
尝试更改 top/bottom 布局边距并保持 Qt::AlignVCenter
:
topBarLayout->setContentsMargins(9,0,9,5);