在qt中如何在调整小部件大小时使按钮相应移动

时间:2013-05-07 08:25:49

标签: qt resize move

我想这样做:当我放大主窗口按下并移动鼠标时,我希望窗口小部件(如按钮)相应移动(不调整按钮大小)以确保按钮始终位于主窗口的边缘。我可以这样做:

void MainWindow::resizeEvent(QResizeEvent *e)
{
int x,y,newx,newy,resizex,resizey;
newx = this->width();
newy = this->height();
resizex = newx - mainwindowWidth;
resizey = newy - mainwindowHeight;
x = ui->button->pos().x();
y = ui->button->pos().y();
ui->button->move(x+resizex, y+resizey);
mainwindowWidth = newx;
mainwindowHeight = newy;
}

但它太复杂了。 QPushButton是否有任何属性可以轻松完成这项工作?等待你的答复。任何意见将是有益的。提前谢谢。

1 个答案:

答案 0 :(得分:0)

您可以将按钮添加到布局中并添加垫片以将按钮推到边缘。

以下是一个例子:

QHBoxLayout *hlayout = new QHBoxLayout;
ui->verticalLayout->addLayout(hlayout);

QPushButton *button = new QPushButton("Button");
hlayout->addWidget(button);
QSpacerItem *item = new QSpacerItem(1,1, QSizePolicy::Expanding, QSizePolicy::Fixed);    
hlayout->addSpacerItem(item);