如何获得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 );
}
对不起我的英语。
答案 0 :(得分:0)
似乎不可能,所以我用 QFontMetrics 计算了 QLabel 的内容大小。
//Вычислить ширину строки в пикселах
int MyTranslationButton::calcStringPixelWidth( QString s_str, QFont font, int n_font_size )
{
font.setPointSize( n_font_size );
QFontMetrics fm( font );
return fm.width( s_str );
}
//Вычислить высоту строки в пикселах
int MyTranslationButton::calcStringPixelHeight( QFont font, int n_font_size )
{
font.setPointSize( n_font_size );
QFontMetrics fm( font );
return fm.height();
}