我有使用实现的富文本项目QGraphicsTextItem
设置字体大小,例如:
void set (int fontSize) {
QTextCursor _cursor = textCursor();
QTextCharFormat _format;
_format.setFontPointSize(fontSize);
_cursor.mergeCharFormat(_format);
setTextCursor(_cursor); }
更复杂的是读取字体大小。
假设我有一个选择,我必须遍历文档,遍历所有QTextBlock
, QTextFragment
,读取QTextCharFormat
...
但是简单的选项,如果没有选择,只需读取光标处的字体大小:
int get () {
return textCursor().charFormat().fontPointSize(); }
这可行,但我发现了 3 个问题:
QGraphicsTextItem
1)通过属性设置字体大小:
QFont f = font();
f.setPointSize(20);
setFont(f);
这通过我上面的函数返回 0 get
。要设置整个项目的字体大小,我必须使用与函数中相同的方法set
。
该方法不应该setFont
设置一个可以从QTextCursor
?
2)setHtml
可以设置格式 - 但我看不到任何读取格式的方法
如何从 html 片段中读取富文本格式?是唯一的可能性,解析 html 吗?
3)(我目前的绊脚石)
从外部源复制格式化的文本并粘贴QGraphicsTextItem
似乎保持源的格式 - 但我怎样才能阅读该格式?
如果文本是从外部粘贴的,则上述get
方法读取字体大小为 0。
font().pointSize()
总是返回 8。(我没有设置它,所以我想这是默认值)
是否有另一种读取文本格式的方法?
剪贴板文本是使用 html 格式化的吗?
如何从粘贴的文本中找到字体大小(或任何其他格式)?
(同样的问题也适用于块格式,比如对齐)。