#python #css #pyqt4 #pyside #rich-text-editor
#python #css #pyqt4 #pyside #rich-text-editor
Вопрос:
Мы создаем редактор на QTextEdit
основе. Мы используем QtGui.QComboBox
in QtGui.QTextEdit
для выбора размеров шрифта. Мы используем следующие размеры CSS: small
, normal
, large
x-large
и xx-large
. Наибольший размер составляет около 24 точек. Есть ли какой-нибудь способ увеличить его до 48 пунктов? (При сохранении возможности масштабирования с помощью Ctrl колесика мыши.)
Комментарии:
1. Используйте
pt
илиpx
вместо относительных размеров шрифта CSS.2. Тогда CTRL вращение колесика мыши не увеличивает масштаб.
Ответ №1:
Свойство CSS font-size поддерживает либо абсолютный размер (указанный в точках или пикселях), либо именованный относительный размер («маленький», «средний», «большой», «x-large» или «xx-large»).
Относительные размеры соответствуют размеру шрифта документа, что означает размер шрифта, установленный в body
теге для документов с форматированным текстом. Если размер шрифта документа не был установлен явно, он будет унаследован от шрифта по умолчанию для виджета (если он у него есть) или шрифта приложения по умолчанию.
Итак, если для шрифта документа установлено значение 10pt:
font = QFont(self.widget.font())
font.setPointSize(10)
widget.setFont(font)
Затем относительные шрифты будут рассчитаны следующим образом:
small
: 0,8 * 10 = 8ptmedium
: 1.0 * 10 = 10ptlarge
: 1.2 * 10 = 12ptx-large
: 1.5 * 10 = 15ptxx-large
: 2.0 * 10 = 20pt
Это означает, что единственным способом получить xx-large
значение 48pt было бы установить размер шрифта документа равным 24pt (что довольно бесполезно, но это так).
Обратите внимание, что масштабирование выполняется путем изменения размера шрифта документа. Таким образом, установка абсолютного размера шрифта для блока текста предотвратит его увеличение.
Комментарии:
1. Спасибо, что разъяснили этот момент. К сожалению, это все еще оставляет нас без возможности создавать шрифты большего размера. Возможно ли переопределить таблицу стилей, чтобы увеличить множители? Или, возможно, мы можем определить больше таблиц стилей? Или есть какой-либо другой способ изменить размеры шрифта, не жертвуя возможностью масштабирования документа?
2. @VeetVivarto. Множители жестко запрограммированы в
QTextCharFormat
реализации, которая также используется для форматированияbig
,small
,h1
,h2
и т.д. html-тегов. Поэтому трудно найти способ обойти это, особенно если вы также хотите увеличить масштаб документа. Вы действительно сталкиваетесь с теми же проблемами, что и разработчики веб-страниц, только это еще хуже, потому чтоQTextEdit
поддерживает только ограниченное подмножество html и css. Какой редактор вы создаете? Рассматривали ли вы возможность использования QScintilla вместо этого?