C++ 在水平布局中将标签垂直居中
我的C++ 在水平布局中将标签垂直居中,c++,css,qt,user-interface,padding,C++,Css,Qt,User Interface,Padding,我的QLabel在QHBoxLayout中垂直居中有点问题。我的相关代码如下: QFrame* topBar = new QFrame(); topBar->setStyleSheet("background-color: #2c3d50;border-bottom: 3px solid #2c92b6;"); topBar->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed); topBar->setFixedHei
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
或添加padding/margin:
,这只会继续向下移动QLabel
QBoxLayout
以垂直居中标签可以解决这个问题,但我将在该条上添加许多组件,因此这种“解决方案”将非常不切实际
TL;DR:如何在水平布局中垂直对齐标签(或其文本)?
尝试更改布局的上/下边距,并保持Qt::AlignVCenter
:
topBarLayout->setContentsMargins(9,0,9,5);
尝试更改布局的上/下页边距,并保持Qt::AlignVCenter
:
topBarLayout->setContentsMargins(9,0,9,5);
@G.M.正如我的文章所述,使用对齐属性没有多大帮助,结果如图所示。@GCyrillus这是Qt,HTML没有生成,上面的代码摘录中有样式表。如果您只是删除对setizepolicy
的调用,会发生什么?@G.M.默认策略(首选/首选
)如前所述,这会导致水平方向上的最大拉伸(根据来源,默认的标签
行为)和垂直方向上的行为#2。您是否可以编辑您的问题,使其包含在帖子中显示的图像中。很抱歉,如果没有这些,我不确定我是否完全理解这个问题。@G.m.正如我的文章所述,使用对齐属性没有多大帮助,结果如图所示。@GCyrillus这是Qt,不会生成HTML,并且上面的代码摘录中存在样式表。如果只删除对setSizePolicy
的调用,会发生什么情况?@G.M.使用默认策略(首选/首选
),这会导致水平方向上的最大拉伸(根据来源,默认标签
行为)如前所述,在垂直方向上的行为2。你能编辑你的问题,使其包含在你的帖子中显示的图像中吗。很抱歉,没有这一点,我不确定我是否完全理解这个问题。根据我的测试,默认情况下它是垂直居中的,我不需要Qt::AlignVCenter
。谢谢,这很有效。正如@ymoreau所提到的,Qt::AlignVCenter
是不必要的。根据我的测试,默认情况下它是垂直居中的,我不需要Qt::AlignVCenter
。谢谢,这很有效。正如@ymoreau所提到的,Qt::AlignVCenter
不是必需的。