Russian Qt Forum

Qt => Общие вопросы => Тема начата: akorchagin от Март 01, 2006, 13:00



Название: Подскажите, плиз, моя ошибка, или QFontMetrucs
Отправлено: akorchagin от Март 01, 2006, 13:00
Здравствуйте, люди добрые.
Вопрос следующий.
Работаю с Qt 4.
Создаю класс - наследник QWidget. В PaintEvent пишу следующее:void WidFind::paintEvent(QPaintEvent *event)
{
   QPainter painter(this);
   QFont font("Arial Cyr");
   const int fontSize = 24;
   font.setPixelSize(fontSize);
   painter.setFont(font);
   QFontMetrics myFontMetrics = fontMetrics();
   int widthOfString = myFontMetrics.width(f_text);//не работает
   //int widthOfString = myFontMetrics.width(f_text) * fontSize / 10;//работает
   int s = 0;
   for(int i = fontSize; i < height(); i += fontSize)
   {
      int p = s;
      while(p < width())
      {
         painter.drawText(p, i, f_text);
         p += widthOfString;
      };
      s -= 10;
      if (s < (-widthOfString))
         s += widthOfString;
   };
}         


При этом текст на выводимой картинке перекрывается по горизонтали.
Такое ощущение, что в качестве размер шрифта берется системный размер.
В документации, вроде, должен браться установленный.
Чья ошибка, моя или QFontMetrics? Если моя, то в чем?


Название: Подскажите, плиз, моя ошибка, или QFontMetrucs
Отправлено: Dendy от Март 01, 2006, 13:37
Дак. Для QPainter'а тьІ устанавливаешь шрифт QFont( "Arial Cyr", 24 ), а QFontMetrics берёшь из настроек окна. И удивляешься :-D

Строки будут рисоваться слитно, только если QFontMetrics будет ссьІлаться на шрифт, которьІм рисуют.

Предполагаю, что тебе нужно делать так:

Код:
QFontMetrics myFontMetrics = painter.fontMetrics();


Название: Подскажите, плиз, моя ошибка, или QFontMetrucs
Отправлено: akorchagin от Март 01, 2006, 15:44
Благодарю.
Понял свою ошибку. Я планировал в конструктор QFontMetrics передать QFont, но забыл.