如何将pushButton锚定到小部件?

时间:2010-09-09 00:20:27

标签: c++ qt

我创建了一个非常简单的窗口,上面有一个按钮。我的按钮从窗口右边缘10像素,从底部10像素。即使窗口调整大小,我也想保持这个位置。这意味着,右边10个,底部10个。

怎么做?

由于

zalkap

2 个答案:

答案 0 :(得分:6)

在具有2列和2行的小部件上安装QGridLayout,在右下角的单元格中添加按钮,然后将第一行和第一列设置为拉伸。

QWidget *widget = new QWidget(); // The main window
QGridLayout *layout = new QGridLayout(widget); // The layout
QPushButton *button = new QPushButton(QString("Button"), widget); // The button

layout->setContentsMargin(10,10,10,10); // To have 10 pixels margins all around the widget
layout->addWidget(button, 1, 1);
layout->setRowStretch(0, 1);
layout->setColumnStretch(0, 1);

答案 1 :(得分:3)

通常,使用布局。它是最简单,最强大的解决方案,它最适合不可预测的小部件大小(在大多数情况下,由于不同的平台,字体大小,翻译的字符串等,它们是不可预测的)。如果您确实需要手动定位(通常不会发生),您可以在父项中重新实现resizeEvent()并自己移动子项。 E.g。

void MyParentWidget::resizeEvent( QResizeEvent* ) {
    m_child->move( width() - m_child->width() - 10, height() - m_child->height() - 10 ); 
}

这会将孩子移到右下角。