如何使用 Qt Creator 的设计器水平对齐小部件
How can I align Widgets left horizontally using Qt Creator's Designer
我想创建新的 QPushButton 并通过按 "create Button" 按钮将它们添加到我的水平布局中。我还希望它们向左对齐,所以每个新按钮都应该紧跟在最后一个按钮之后,中间有一点间距。
但这是我启动应用程序并添加创建三个按钮时得到的结果
首先,我不喜欢我的 "create new Button"-Button 居中。当我创建一个 Button 时,它们都左对齐。但是当我第二次和第三次单击时,创建的按钮中间有大 space。我尝试使用 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);
}
我想创建新的 QPushButton 并通过按 "create Button" 按钮将它们添加到我的水平布局中。我还希望它们向左对齐,所以每个新按钮都应该紧跟在最后一个按钮之后,中间有一点间距。
但这是我启动应用程序并添加创建三个按钮时得到的结果
首先,我不喜欢我的 "create new Button"-Button 居中。当我创建一个 Button 时,它们都左对齐。但是当我第二次和第三次单击时,创建的按钮中间有大 space。我尝试使用 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);
}