【问题标题】:How can I align Widgets left horizontally using Qt Creator's Designer如何使用 Qt Creator 的设计器水平对齐小部件
【发布时间】:2016-01-24 08:37:16
【问题描述】:

我想创建新的 QPushButtons 并通过按下“创建按钮”按钮将它们添加到我的水平布局中。我还希望它们左对齐,所以每个新按钮都应该在最后一个添加的按钮之后,中间有一点间距。

但这是我启动应用程序并添加创建三个按钮时得到的结果

首先,我不喜欢我的“创建新按钮”——按钮居中。当我创建一个按钮时,它们都向左对齐。但是当我第二次和第三次单击时,按钮之间的空间很大。我尝试使用垫片,但它们仅有助于解决 createButton 的对齐问题。有没有简单的方法可以像水平堆栈一样一个接一个地添加按钮?

这是我用来生成按钮的代码:

QPushButton *newCategory = new QPushButton(ui->category);
newCategory->setGeometry(0,0,140,60);
newCategory->setMinimumSize(140,60);
newCategory->setMaximumSize(140,60);
newCategory->setText("Test");

ui->horizontalLayout->addWidget(newCategory,0,Qt::AlignLeft);

【问题讨论】:

标签: c++ qt layout alignment


【解决方案1】:

您应该使用QBoxLayout::addStretch 将您的按钮向左推。

一个例子:

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    btnLayout = new QHBoxLayout(this);

    QPushButton *createBtn = new QPushButton("Create button");
    btnLayout->addWidget(createBtn);
    btnLayout->addStretch(1);

    connect(createBtn, SIGNAL(clicked()), this, SLOT(addButton()));
}

void Widget::addButton()
{
    // btnLayout->count() is equal to number of added buttons plus 
    // one QSpacerItem implicitly added by QBoxLayout::addStretch
    int pos = btnLayout->count() - 1;

    QPushButton *btn = new QPushButton;
    btn->setText(QString("Button #%1").arg(pos));
    btnLayout->insertWidget(pos, btn);
}

【讨论】:

    猜你喜欢
    • 2017-08-02
    • 2014-11-29
    • 2018-03-03
    • 1970-01-01
    • 2020-07-16
    • 2020-10-13
    • 1970-01-01
    • 2011-04-18
    • 1970-01-01
    相关资源
    最近更新 更多