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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QFont  (Прочитано 7240 раз)
npopok
Гость
« : Июнь 15, 2007, 10:18 »

Мне нужно в зависимости от размера рисуемой области автоматически подбирать максимальный размер шрифта.Соответственно,чтобы весь текст помещался в этой области.
Как мне это лучше сделать?
Записан
SABROG
Гость
« Ответ #1 : Июнь 15, 2007, 10:39 »

Это ты как в excelе сделать хочешь, чем больше буков в тексте, тем меньше шрифт в ячейке ?
Записан
BaltikS
Гость
« Ответ #2 : Июнь 15, 2007, 10:48 »

QFontMetrics туда смотри
Записан
SABROG
Гость
« Ответ #3 : Июнь 15, 2007, 11:00 »

Цитата: "BaltikS"
QFontMetrics туда смотри


Я например не нашел там ни одного метода для "подгона" размера шрифта под определенную рамку. Зато узнать размер рамки по размеру шрифта - пожалста. Как выход из положения - перебор всех размеров шрифта пока boundingRect не станет равным твоим размерам.
Записан
J. Bond
Гость
« Ответ #4 : Июнь 15, 2007, 11:05 »

А QFontInfo::pixelseize или pointsize?
делим высоту прямоугольника на размер точки, получаем размер шрифта
Записан
SABROG
Гость
« Ответ #5 : Июнь 15, 2007, 11:16 »

Цитата: "J. Bond"
А QFontInfo::pixelseize или pointsize?
делим высоту прямоугольника на размер точки, получаем размер шрифта


Тут высотой не обойдешься, текст произвольной длинны, также как и ширина виджета. Шрифт должен уменьшаться в зависимости от длинны текста.
Записан
J. Bond
Гость
« Ответ #6 : Июнь 15, 2007, 11:26 »

Длина текста=размер шрифта * размер точки * количество букв ? Улыбающийся
Записан
SABROG
Гость
« Ответ #7 : Июнь 15, 2007, 11:33 »

Цитата: "J. Bond"
Длина текста=размер шрифта * размер точки * количество букв ? Улыбающийся


Цитировать

А QFontInfo::pixelseize или pointsize?
делим высоту прямоугольника на размер точки, получаем размер шрифта


Размер шрифта - это итоговый результат, а в твоей формуле он используется чтобы вычеслить длинну строки. Размер шрифта - это твое неизвестное. У тебя уравнение с двумя неизвестными.
Записан
J. Bond
Гость
« Ответ #8 : Июнь 15, 2007, 11:35 »

Цитата: "SABROG"
Цитата: "J. Bond"
Длина текста=размер шрифта * размер точки * количество букв ? Улыбающийся


Цитировать

А QFontInfo::pixelseize или pointsize?
делим высоту прямоугольника на размер точки, получаем размер шрифта


Размер шрифта - это итоговый результат, а в твоей формуле он используется чтобы вычеслить длинну строки. Размер шрифта - это твое неизвестное. У тебя уравнение с двумя неизвестными.


Т.к. нужно чтобы текст умешался в требуемой области, то длина текста = длине области.
Записан
npopok
Гость
« Ответ #9 : Июнь 15, 2007, 11:40 »

Я с начала находил необходимый размер квадрата для строки с заданным фоном с помощью QFontMetrics, а потом увеличивал фон и вновь повторял процедуру.  Но как-то это криво...

Мне нужно шрифт подобрать, а не длину текста найти)
Записан
J. Bond
Гость
« Ответ #10 : Июнь 15, 2007, 11:49 »

Цитата: "npopok"
Я с начала находил необходимый размер квадрата для строки с заданным фоном с помощью QFontMetrics, а потом увеличивал фон и вновь повторял процедуру.  Но как-то это криво...

Мне нужно шрифт подобрать, а не длину текста найти)


Блин ну не можем из уравнения найти? Улыбающийся

РАЗМЕР ШРИФТА=(ДЛИНА ОБЛАСТИ ДЛЯ РИСОВАНИЯ)/(РАЗМЕР ТОЧКИ * КОЛИЧЕСТВО БУКВ)
Записан
npopok
Гость
« Ответ #11 : Июнь 15, 2007, 11:58 »

А размер точки не подскажешь?
Как ты учитываешь параметры  "левое пространство буквы","правое пространство буквы"и тп?Подскажи
Записан
J. Bond
Гость
« Ответ #12 : Июнь 15, 2007, 12:32 »

Сейчас откопал в FontMetrics хорошую функцию


qreal QFontMetricsF::averageCharWidth () const
Returns the average width of glyphs in the font.

Т.о. вместо размера точки можно использовать среднюю длину символа
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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