我使用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个问题:
1)设置字体大小由QGraphicsTextItem
性质:
QFont f = font();
f.setPointSize(20);
setFont(f);
这返回0通过我的get
函数上面。要设置整个项目的字体大小,我必须使用与set
函数相同的方法。
应该不是setFont
方法设置可以从QTextCursor
读取的字体?
2)setHtml
可以设置格式 - 但我没有看到任何方式来阅读,格式化
我如何可以读取富文本从HTML片段格式?是唯一的posiblity,解析html?
3)(我目前的绊脚石)
复制格式从外部源文本,并在QGraphicsTextItem
粘贴似乎保持源的格式 - 但我怎么可以读取的格式?
上述get
方法读取的字体大小0,如果文本是从外面粘贴。
font().pointSize()
总是返回8.(我没有设置它,所以我想这是一个默认设置)
是否有另一种方法来阅读文本格式?
是使用html格式化的剪贴板文本吗?
我怎样才能找到所粘贴的文本字体大小(或任何其他格式)?
(同样的问题适用于块格式化,像对准)。
感谢这个例子,所以基本上不可能通过用户交互实现富文本 - 使用光标位置,选择等等 - 带有任何html或任何剪贴板输入,这就是我所理解的。由于这是我必须做的:实现富文本编辑,唯一的办法就是禁用任何html格式,只允许纯文本粘贴。真的吗 ?或者我明白你的答案错了? – Thalia
我的代码...是巨大的...但我插入了相关的功能,设置字体大小(在光标点,所以新的文本将具有该字体大小)或选定的文本片段 - 也可以获取字体在光标位置。 – Thalia
您的代码可以解答我的问题(2) - 并且还可以确认我在(1)中的陈述 - 除了似乎只有一种方法才能获取整个文档中的所有格式。没有办法在特定点(例如位置)或特定范围(选择 - 从位置a到位置b)得到它。 – Thalia