Название: непонятки с QFontMetrics::size() Отправлено: Exception13 от Октябрь 06, 2009, 10:32 Надо узнать длину строки в пикселях.
делаю следующее: данный код работеат в рамках объекта унаследованного от QWidget: Код
В результате он мне выдает sz.width() = 320, что характерно, изменение величины tabStops не приводит к какому - либо изменению конечного результата. Почему то функция полностью игнорирует значение tabStops и всегда использует значение по умолчанию = 80 пикселам ? В документации сказано следующее: Цитировать If Qt::TextExpandTabs is set in flags, then: if tabArray is non-null, it specifies a 0-terminated sequence of pixel-positions for tabs; otherwise if tabStops is non-zero, it is used as the tab spacing (in pixels). Т.е. как я понял: если установлен флаг Qt::TextExpandTabs и значение tabArray = 0, и если значение tabStops отлично от 0, то оно используется в качестве размера для символа табуляции. И пАчиму же оно не используется тогда ? это баг или фича такая ? Название: Re: непонятки с QFontMetrics::size() Отправлено: Makss от Октябрь 06, 2009, 11:36 баг ето или фича - я незнаю, но длину текста узнаю так
QFontMetrics fm(font()); int len_px = fm.width("qwerty"); Название: Re: непонятки с QFontMetrics::size() Отправлено: Exception13 от Октябрь 06, 2009, 11:53 а как тому же самому QFontMetrics::width дать понять что ширина символа '\t' составляет n пикселов ?
Посмотрел по исходам - все вызовы boundingRect, size, ведут к qt_format_text, в котором некоторые строчки кода, как мне показались - вообще ни о чем. Так, напрмер, при расчете длины с ранее указанными флагами, параметр tabStops - вообще не используется. Название: Re: непонятки с QFontMetrics::size() Отправлено: Makss от Октябрь 06, 2009, 12:41 ну если я не ошибаюсь то \t или по другому просто табуляция зависит от настроек того же самого редактора в котором текст редактируется, ну и возможно от системы...
Все ведь видели и знают что если редактировать сначала в одном редакторе а потом тот же самый файл открыть в другом - получим разные по размерам табуляции или отступы от начала... Название: Re: непонятки с QFontMetrics::size() Отправлено: Exception13 от Октябрь 07, 2009, 09:01 Все ведь видели и знают что если редактировать сначала в одном редакторе а потом тот же самый файл открыть в другом - получим разные по размерам табуляции или отступы от начала... ииии ??? :) Что то мне другого способа пока не видится кроме как тупо глупо: Код Самое забавное: fontMetrics().width(QLatin1Char('\t')) = 13, а fontMetrics().width(QString(QLatin1Char('\t'))) = 80 ??? вообще бредняк какой то ??? |