Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
Заблокирован
1

Как знать, какого габарита должен быть прямоугольник (boundaryRect), чтоб в него поместился текст

13.10.2014, 16:52. Просмотров 1073. Ответов 5
Метки нет (Все метки)

И так.
Есть QPainter, у него есть функция drawText, первый аргумент одного из переопределения которой - boundaryRect, то есть прямоугольник в которой надо впихнуть текст и нарисовать. Всё allright.
А вот теперь подхожу сзади
У меня текст, под который я хочу подобрать прямоугольник фиксированной ширины.
То есть мне нужен прямоугольник под текст фиксированной ширины, высота которого бы менялась в зависимости от длинны текста и была равна минимально необходимой, чтоб впихнуть весь текст.
Грубо говоря надо рассчитать размер прямоугольника под текст.
Возможно мне поможет QFontMetrics, но пока - что я не понял, как именно
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.10.2014, 16:52
Ответы с готовыми решениями:

Где должен быть текстовый файл, чтобы программа читала с него текст
Вот куда мне поместить файл "input.txt" чтобы прога читала с него текст? int Length() { ...

Описать абстрактный класс породить от него еще два,один должен остаться абстрактным,другой должен быть способен пораждать объекты
Знает кто как сделать?

Какого размера должен быть файл подкачки?
Подскажите пожалуйста какого размера должен быть Файл подкачки? Размер оперативки 3G. Текущий...

Какого типа должен быть 3-ий аргумент функции make_heap?
make_heap(Iterator first,Iterator last,Compare comp); Так вот: "Как написать 3-ий параметр?" Я...

5
Pied Piper
235 / 226 / 57
Регистрация: 15.01.2013
Сообщений: 855
13.10.2014, 16:59 2
http://qt-project.org/doc/qt-4.8/qfontmetrics.html
Функция width, если не ошибаюсь.
1
594 / 394 / 79
Регистрация: 23.10.2013
Сообщений: 1,143
13.10.2014, 17:34 3
В QFontMetrics нужно передать текущий шрифт QFont.

C++ (Qt)
1
2
3
4
5
6
7
QFontMetrics fMetrics(font);
// Чтобы узнать ширину строки в пикселях
int strWidth = fMetrics.width(string); // где string - искомая строка QString
// Чтобы узнать высоту шрифта
int strHeight = fMetrics.height();
// А это по идее межстрочное расстояние
int spaсing = fMetrics.lineSpacing();
Чтобы подгонять высоту прямоугольника по высоте, вам нужно знать количество строк и шрифт.
1
Заблокирован
13.10.2014, 19:54  [ТС] 4
Цитата Сообщение от alexey_rage Посмотреть сообщение
вам нужно знать количество строк
А вот я не знаю заранее,сколько у меня будет строк - текст изменяется в рантайме. Полагаю, что нужно сформировать строку с переносами, согласно ширине прямоугольника, но как ?
0
135 / 139 / 7
Регистрация: 22.08.2011
Сообщений: 484
14.10.2014, 11:36 5
Добавлю только, что использовать для подсчёта нужно какой-то из моноширинных шрифтов.
Если перенос нужен не по слогам, то "\n" в помощь, но лучше сделать перенос по словам, а
ширину задать по ширине самого большого слова... Подбор ширины по шрифту тут вручную!

Не по теме:


Здался вам прямоугольник, а чем в оформленной лабеле рисовать с авторазмером по
лайоутам с правильной поликой расширения "преферед" или "експландед" ущербно?

0
Заблокирован
14.10.2014, 11:56  [ТС] 6
Цитата Сообщение от _SASA_ Посмотреть сообщение
Добавлю только
Тут рано ещё говорить подобные фразы, т.к. вопрос ещё на разрешён
Цитата Сообщение от -THE_MASTER666- Посмотреть сообщение
А вот я не знаю заранее,сколько у меня будет строк - текст изменяется в рантайме. Полагаю, что нужно сформировать строку с переносами, согласно ширине прямоугольника, но как ?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.10.2014, 11:56

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Какого размера должен быть рисунок для кнопки?
Здравствуйте! Подскажите пожалуйста, какого размера должен быть рисунок для кнопки.

На основании какого закона должен быть лицензионный софт?
Кончается срок лицензии на антивирусник, начальник упирается и говорит ставить левый или бесплатный...

Генерация PDF. Какого формата должен быть второй параметр функции PDF_open_file() ?
int PDF_open_file (int pdf object )

Вывести на экран текст, не закрашивая под него прямоугольник, как это делает textout
Есть ли способ вывести на экран текст, не закрашивая под него прямоугольник, как это делает...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.