qt5如何获得qlabel的实际宽度和高度?

时间:2021-04-20 18:20:23

标签: qt qt5 qlabel

如何获得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 );
}

对不起我的英语。

1 个答案:

答案 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();
}
相关问题