Russian Qt Forum

Qt => Общие вопросы => Тема начата: swizar от Апрель 20, 2006, 12:08



Название: QFontMetrics
Отправлено: swizar от Апрель 20, 2006, 12:08
Добрый день всем.
Возникла небольшая сложность с использование QFontMetrics может кто сталкивался. Пример:

Код:

QPixmap pix ( maxw, h, 1 );
for (i = 0; i < (int) chars.count (); i++ )
{
    ch_img = NULL;
    ch = QChar ( chars [ i ] );
    if ( m.inFont ( ch ) )
    {
        if ( ! p.begin (&pix, false) ) continue;

        p.setFont ( font );
        p.setBackgroundColor ( Qt::color0 );
        p.setPen( QPen (Qt::color1) );

        p.eraseRect ( 0, 0, pix.width (), pix.height () );
        QString s;
        s += ch;
        p.drawText ( 0, 0, pix.width (), pix.height (), Qt::AlignLeft | Qt::AlignTop, s );
        p.end ();

       QFontMetrics m1 = p.fontMetrics ();
       mfont->data [ i + 1 ].code = ch.unicode ();
       mfont->data [ i + 1 ].width = m1.width ( ch );
       chw = mfont->data [ i + 1 ].width;
       mfont->data [ i + 1 ].rpel = m1.rightBearing ( ch );
       mfont->data [ i + 1 ].lpel = m1.leftBearing ( ch );
       ch_img_w = chw + abs (mfont->data [ i + 1 ].rpel) + abs (mfont->data [ i + 1 ].lpel);
        mfont->data [ i + 1 ].line_len = ( ch_img_w % 8 == 0 ) ? (ch_img_w / 8 ) : (ch_img_w / 8 + 1);
     }
}

Прошу строго не судить, долго не думал  :oops: .
Проблема в том что m1.rightBearing ( ch )  и m1.leftBearing ( ch ) всегда дают 0. Программка собиралась и на Win и на Linux результат один и тот же.

В доках Qt есть пример qfd, многое взято оттуда, но пример работает,
а эта моя программулина нет, в чем дело понять не могу...