我正在学习QTextOption标志。其中包含includeTrailingSpaces标志。我将选项设置为我的编辑。并看到了结果。
QTextOption.IncludeTrailingSpaces设置此选项后,QTextLine.naturalTextWidth()和naturalTextRect()将返回一个值,该值包括文本中尾随空格的宽度。否则,将不包括此宽度。
但是两种情况都包括空格的宽度。我应该在何时何地使用此标志?我想澄清一下。
样本代码
import os
import PySide2
from PySide2 import QtWidgets , QtGui , QtCore
import sys
dirname = os.path.dirname(PySide2.__file__)
plugin_path = os.path.join(dirname, 'plugins', 'platforms')
os.environ['QT_QPA_PLATFORM_PLUGIN_PATH'] = plugin_path
def main():
if QtWidgets.QApplication.instance() is None:
app = QtWidgets.QApplication([])
else:
app = QtWidgets.QApplication.instance()
textEdit = QtWidgets.QTextEdit()
option = textEdit.document().defaultTextOption()
option.setFlags(
# QtGui.QTextOption.Flag.AddSpaceForLineAndParagraphSeparators|\
QtGui.QTextOption.Flag.IncludeTrailingSpaces
# QtGui.QTextOption.Flag.ShowDocumentTerminator|\
# QtGui.QTextOption.Flag.ShowLineAndParagraphSeparators|\
# QtGui.QTextOption.Flag.ShowTabsAndSpaces|\
# QtGui.QTextOption.Flag.SuppressColors
)
def checkTranlingSpaceEffect():
tc = textEdit.textCursor()
block = tc.block()
layout = block.layout()
line = layout.lineAt(0)
naturalTextWidth = line.naturalTextWidth()
#It seems that it is the same result when the flag is not set.
print(naturalTextWidth)
textEdit.document().setDefaultTextOption(option)
textEdit.connect(textEdit, QtCore.SIGNAL("textChanged()"), checkTranlingSpaceEffect)
textEdit.show()
sys.exit(app.exec_())
if __name__ == "__main__":
main()
作为研究结果,此标记当前无效。
根据woboq,includeTranlingSpaces
取决于SpaceData.length
。
此变量在layout_helper
的QTextLayout
方法中使用。
但是尽管存在API文档,我们现在仍无法使用此方法。
如果要删除空格,我们别无选择,只能自己删除空格。
如果我现在考虑的话,这些标志相对于Qt4
有所改进。
此标志将在将来的版本中得到改进。可能。