Russian Qt Forum
Май 01, 2024, 21:33 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Подскажите, плиз, моя ошибка, или QFontMetrucs  (Прочитано 3087 раз)
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? Если моя, то в чем?
Записан
Dendy
Гость
« Ответ #1 : Март 01, 2006, 13:37 »

Дак. Для QPainter'а тьІ устанавливаешь шрифт QFont( "Arial Cyr", 24 ), а QFontMetrics берёшь из настроек окна. И удивляешься :-D

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

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

Код:
QFontMetrics myFontMetrics = painter.fontMetrics();
Записан
akorchagin
Гость
« Ответ #2 : Март 01, 2006, 15:44 »

Благодарю.
Понял свою ошибку. Я планировал в конструктор QFontMetrics передать QFont, но забыл.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.047 секунд. Запросов: 20.