更改QTextEdit';s断线算法?
我想更改QTextEdit的换行算法,以便以更好的方式包装我显示的非英语文本(实际上是代码)。Qt中“单词”的定义可能非常适合人类语言,但它不适合代码,因此长代码行最终会被包装在非常糟糕的地方。例如,这一行代码:更改QTextEdit';s断线算法?,qt,qtextedit,Qt,Qtextedit,我想更改QTextEdit的换行算法,以便以更好的方式包装我显示的非英语文本(实际上是代码)。Qt中“单词”的定义可能非常适合人类语言,但它不适合代码,因此长代码行最终会被包装在非常糟糕的地方。例如,这一行代码: – (void)setRecombinationRate(numeric rates, [Ni ends = NULL], [string$ sex = "*"]) 在一个狭窄的窗口中,由QTextEdit包装为: – (void)setRecombinationRate(nume
– (void)setRecombinationRate(numeric rates, [Ni ends = NULL], [string$ sex = "*"])
在一个狭窄的窗口中,由QTextEdit包装为:
–
(void)setRecombinationRate(numeri
c rates, [Ni ends = NULL], [string
$ sex = "*"])
我想定制断线算法,以实现更像这样的功能:
– (void)setRecombinationRate(
numeric rates, [Ni ends = NULL],
[string$ sex = "*"])
我在Cocoa中也做了类似的事情,在NSTextStorage
的子类中重写了-lineBreakBeforeIndex:withinRange:
;我想知道的是,在Qt中是否有类似的地方可以覆盖默认行为
请注意,我知道您可以自定义Qt的布局,以便文本在
QTextEdit
中围绕障碍物流动;这不是我要问的。当然,您可以QTextEdit::setWordWrapMode(qtexOption::WordWrap)
避免在单词中间换行。但是我看不到一种简单的方式来选择在,比如说,(
)进行换行。我认为您正在寻找一个自定义或类似的东西。例如,QtCreator像QTextEdit一样(使用WordWrap模式)进行换行。但是我看到SublimateText将在“(“Rate(numeric)”(在“Rate(numeric)”之后中断,然后在前导“-”之后换行,这很好。FWIW,我跟踪了默认的换行符。这不完全是我想要复制的。希望有一种更简单的方法来设置“首选换行符”,但我找不到它。QTextEdit::setWordWrapMode(QTextOption::WordWrap)
最终并不是对我的应用程序的改进;它允许文本比视图更宽,以避免打破一个单词(添加一个水平滚动条),这不是我想要的,所以我坚持默认的QTextOption::WrapAtWordBoundaryOrAnywhere
。哇,是的,你链接到的代码是硬核,而方法是layout\u helper()
,无论如何都是私有的。哦,好吧。谢谢你的研究。看起来这现在在Qt内几乎不可能做到。当然,你可以QTextEdit::setWordWrapMode(QTextOption::WordWrap)
来避免在单词中间换行。但是我看不到一种简单的方式来选择在,比如说,(
。我想您正在查看一个自定义或类似的东西。例如,QtCreator会像QTextEdit一样断开(使用WordWrap模式)。但我看到SublimateText将在“(“Rate(numeric)”之后断开,然后在前导“-”之后的空格上换行,这很好。FWIW,我跟踪了默认的换行符。这不完全是我想要复制的。希望有一种更简单的方法来设置“首选换行符”,但我找不到它。QTextEdit::setWordWrapMode(QTextOption::WordWrap)
最终并不是对我的应用程序的改进;它允许文本比视图更宽,以避免打破一个单词(添加一个水平滚动条),这不是我想要的,所以我坚持默认的QTExtraption::WrapAtWordBoundaryOrAnywhere
。哇,是的,你链接到的代码是硬核的,而且这个方法,layout\u helper()
,无论如何都是私有的。哦,好吧,谢谢你的研究。看起来现在在Qt中这几乎是不可能做到的。