Название: QFont Отправлено: npopok от Июнь 15, 2007, 10:18 Мне нужно в зависимости от размера рисуемой области автоматически подбирать максимальный размер шрифта.Соответственно,чтобы весь текст помещался в этой области.
Как мне это лучше сделать? Название: QFont Отправлено: SABROG от Июнь 15, 2007, 10:39 Это ты как в excelе сделать хочешь, чем больше буков в тексте, тем меньше шрифт в ячейке ?
Название: QFont Отправлено: BaltikS от Июнь 15, 2007, 10:48 QFontMetrics туда смотри
Название: QFont Отправлено: SABROG от Июнь 15, 2007, 11:00 Цитата: "BaltikS" QFontMetrics туда смотри Я например не нашел там ни одного метода для "подгона" размера шрифта под определенную рамку. Зато узнать размер рамки по размеру шрифта - пожалста. Как выход из положения - перебор всех размеров шрифта пока boundingRect не станет равным твоим размерам. Название: QFont Отправлено: J. Bond от Июнь 15, 2007, 11:05 А QFontInfo::pixelseize или pointsize?
делим высоту прямоугольника на размер точки, получаем размер шрифта Название: QFont Отправлено: SABROG от Июнь 15, 2007, 11:16 Цитата: "J. Bond" А QFontInfo::pixelseize или pointsize? делим высоту прямоугольника на размер точки, получаем размер шрифта Тут высотой не обойдешься, текст произвольной длинны, также как и ширина виджета. Шрифт должен уменьшаться в зависимости от длинны текста. Название: QFont Отправлено: J. Bond от Июнь 15, 2007, 11:26 Длина текста=размер шрифта * размер точки * количество букв ? :)
Название: QFont Отправлено: SABROG от Июнь 15, 2007, 11:33 Цитата: "J. Bond" Длина текста=размер шрифта * размер точки * количество букв ? :) Цитировать А QFontInfo::pixelseize или pointsize? делим высоту прямоугольника на размер точки, получаем размер шрифта Размер шрифта - это итоговый результат, а в твоей формуле он используется чтобы вычеслить длинну строки. Размер шрифта - это твое неизвестное. У тебя уравнение с двумя неизвестными. Название: QFont Отправлено: J. Bond от Июнь 15, 2007, 11:35 Цитата: "SABROG" Цитата: "J. Bond" Длина текста=размер шрифта * размер точки * количество букв ? :) Цитировать А QFontInfo::pixelseize или pointsize? делим высоту прямоугольника на размер точки, получаем размер шрифта Размер шрифта - это итоговый результат, а в твоей формуле он используется чтобы вычеслить длинну строки. Размер шрифта - это твое неизвестное. У тебя уравнение с двумя неизвестными. Т.к. нужно чтобы текст умешался в требуемой области, то длина текста = длине области. Название: QFont Отправлено: npopok от Июнь 15, 2007, 11:40 Я с начала находил необходимый размер квадрата для строки с заданным фоном с помощью QFontMetrics, а потом увеличивал фон и вновь повторял процедуру. Но как-то это криво...
Мне нужно шрифт подобрать, а не длину текста найти) Название: QFont Отправлено: J. Bond от Июнь 15, 2007, 11:49 Цитата: "npopok" Я с начала находил необходимый размер квадрата для строки с заданным фоном с помощью QFontMetrics, а потом увеличивал фон и вновь повторял процедуру. Но как-то это криво... Мне нужно шрифт подобрать, а не длину текста найти) Блин ну не можем из уравнения найти? :) РАЗМЕР ШРИФТА=(ДЛИНА ОБЛАСТИ ДЛЯ РИСОВАНИЯ)/(РАЗМЕР ТОЧКИ * КОЛИЧЕСТВО БУКВ) Название: QFont Отправлено: npopok от Июнь 15, 2007, 11:58 А размер точки не подскажешь?
Как ты учитываешь параметры "левое пространство буквы","правое пространство буквы"и тп?Подскажи Название: QFont Отправлено: J. Bond от Июнь 15, 2007, 12:32 Сейчас откопал в FontMetrics хорошую функцию
qreal QFontMetricsF::averageCharWidth () const Returns the average width of glyphs in the font. Т.о. вместо размера точки можно использовать среднюю длину символа |