Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在水平布局中将标签垂直居中_C++_Css_Qt_User Interface_Padding - Fatal编程技术网

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
    不是必需的。