刚刚添加的小部件的QWidget :: height()到布局中

时间:2010-09-21 23:26:38

标签: qt

如何获得刚刚添加到布局中的窗口小部件的最终高度,但是由于这个原因,它还没有调整到最终尺寸?

基本上我需要这样做:

myGridLayout->addWidget ( somewidget, 0, 0, 1, 1 );

QPushButton *b = new QPushButton(somewidget);
b->setGeometry( somewidget->width() - 50,
                somewidget->height()/2 - 150,
                50, 300);

我想要做的是在刚刚添加的小部件的右边缘中间插入一个按钮(50x300),但为此我需要知道小部件的尺寸,我没有正确的因为它没有在布局中调整到完整大小。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

通常,在显示之前计算布局的内容。如果您需要提前强制它,可以调用QLayout::activate()QLayout::update(),它会重做或更新其父窗口小部件的布局。

答案 1 :(得分:0)

如果我理解正确的话,这应该完成你想要做的事情,而不是试图在正确的时间捕捉大小。添加一个布局到'somewidget'并添加按钮。

myGridLayout->addWidget(somewidget, 0, 0, 1, 1 );

QGridLayout *layout = new QGridLayout(somewidget);
QPushButton *button = new QPushButton();
button->setText("button");
button->setMaximumSize(50,300);
button->setMinimumSize(50,300);
button->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
layout->addWidget(button, 0, 0, Qt::AlignVCenter | Qt::AlignRight);