以水平布局垂直居中标签

时间:2017-06-05 18:11:07

标签: 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->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
  4. Described above

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

    互联网说,添加另一个QBoxLayoutLabel垂直居中可以解决问题,但我会在该栏中添加许多组件,所以这个"解决方案"这将是非常不切实际的。

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

1 个答案:

答案 0 :(得分:2)

尝试更改布局的顶部/底部边距并保留$(document).ready(function() { var x_timer; $(".emal_new").on('click', function(e) { var email_id = $(this).data("name"); var userResult = $(this).find('.user-result') if (x_timer) clearTimeout(x_timer); x_timer = setTimeout(function() { check_email_id_ajax(email_id); }, 100); }); function check_email_id_ajax(userResult, email_id) { userResult.html(TheHTML); $.post('ajax/mailbox.php', { 'email_id': email_id }, function(data) { userResult.html(data); }); } });

Qt::AlignVCenter