繁体   English   中英

如何使用Qt Creator的Designer水平左对齐小部件

[英]How can I align Widgets left horizontally using Qt Creator's Designer

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

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

首先,我不喜欢我的“创造新按钮” - 按钮为中心。 当我创建一个Button时,它们都向左对齐。 但是当我第二次和第三次点击时,按钮会在中间创建大空间。 我尝试使用spacer,但它们只能帮助解决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);

您应该使用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);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM