如何对齐这样的GUI元素? Qt,C ++

时间:2015-06-18 16:11:17

标签: c++ qt

我需要在GUI上对齐元素:实际上是一个标签,但是在特定的位置。我知道如何使用QGridLayout,QHBoxLayout,我知道如何将字体更改为具有指定的大小。但是,我不知道如何对齐标签,如下图所示。有什么建议吗?

enter image description here

3 个答案:

答案 0 :(得分:4)

这是最直接但硬编码的方式。

#include "widget.h"
#include <QLabel>
#include <QFont>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    QSize frameSize = this->frameGeometry().size() - this->geometry().size();

    this->resize(frameSize + QSize(250, 125));
    QLabel * label = new QLabel(this);// parenting instead of layouts
    label->resize(130, 32);
    label->move(60, 40);

    QFont f = label->font();
    f.setPointSize(16);
    label->setFont(f);

    label->setText("Sample");
    label->setFrameStyle(QFrame::Box);
}

Widget::~Widget()
{

}

布局和对齐是一个更好的解决方案,但是如果你真的想给所有东西提供数字......还要考虑使用表格。它使“硬编码”大小和布局变得更加容易。

希望有所帮助。

答案 1 :(得分:1)

如果你想要比例,但可以调整大小,你可以使用QBoxLayouts和addStretch()方法。大概你有一个1/2/1的比例,所以你首先添加一个伸展与拉伸1,然后你的小部件拉伸2然后另一个伸展拉伸1.那将是水平布局,然后你将采取该布局和将它放在1/1/1伸展的垂直布局中。

答案 2 :(得分:1)

如果你知道邻接布局以及如何使用它们而不是很好。

要在布局后进行调整,您应该使用style sheet。这里有一些examples。您可以在QApplication上设置样式表。

QPushButton#buttonName {
    margin-top: 30px;
    margin-bottom: 30px;
    margin-left: 60px;
    margin-right: 60px;
    min-width: 130px;
    min-height : 32px;
}

PS。我知道这是学生作业:P