【发布时间】:2021-07-14 23:13:50
【问题描述】:
如何获取 QLabel 的真实宽度和高度?方法 width() 和 height() 总是返回 100 和 30。我想将 QLabel 放在 QPushButton 中,然后将按钮大小调整为标签的内容,但我的代码不起作用。
void MyTranslationButton::setFullTranslation( QString s_en_transl, QString s_ru_transl )
{
QLabel* label = new QLabel( this );
label->setText
(
"<span style=\"font-size: 24px; font-weight: bold;\" >" + s_en_transl + "</span><br/>" +
"<span style=\"font-size: 18px;\" ><i>" + s_ru_transl + "</i></span>"
);
label->setAttribute( Qt::WA_TransparentForMouseEvents, true );
label->setAlignment( Qt::AlignCenter | Qt::AlignVCenter );
QGridLayout* layout = new QGridLayout( this );
this->setMinimumWidth( label->width() );
this->setMinimumHeight( label->height() );
this->setLayout( layout );
this->layout()->addWidget( label );
}
对不起我的英语。
【问题讨论】:
-
只有当小部件在布局内并且可见时才能知道真正的宽度/高度。在不可能之前。
-
@chehrlic,太难过了
-
@chehrlic 只有当小部件在布局内并且可见时才能知道真正的宽度/高度。 并非完全如此。您可以在调整大小事件中获取小部件的实际大小,即使它不是布局的一部分。
-
@КрошкаРу,
QWidget有一个resizeEvent。重新实现它以了解大小何时以及如何变化。