我试图在QTextEdit中隐藏文本块,但它不起作用:
block = textedit.document().begin()
block.setVisible(False)
此代码适用于QPlainTextEdit,但不适用于QTextEdit。在文档中,我没有发现它如何适用于QTextEdit,只需遵循:
void QTextBlock :: setVisible(bool visible) 设置块的可见性 可见。
这个功能是在Qt中引入的 4.4。
另见isVisible()。
如何在QTextEdit中隐藏块?
提前谢谢
答案 0 :(得分:1)
我已经确认了你描述的行为。另外,我已经确认,在您给出的代码中,遵循setVisible方法,块的可见性确实为假。
所以,我看到的最清楚的解释是:QPlainTextEdit不会从QTextEdit继承。它们都继承自QScrollableArea,我只能假设QTextEdit不尊重其文档块的可见性。 QPlainTextEdit使用的文档使用QPlainTextLayout对象,QTextEdit还有其他我无法确定的内容。
所以......我不确定它是否可以按你想要的方式完成。另一种方法是在进入QTextEdit之前过滤文本,而Python非常适合该任务。
self.paragraphs = ["First paragraph","Second Paragraph","Third Paragraph",]
self.display_text = '\n'.join(self.paragraphs[1:])
self.textedit.setText(self.display_text)
答案 1 :(得分:0)
FWIW,已经有9年了,现在看来似乎行之有效(Qt 5.13.1)。遵循this answer中的示例,但使用的是C ++:
found_tags = product.find_all('a')
for tag in found_tags:
all_text = tag.text
description_text = tag.find('div', attrs={'class': 'tag'}).text
result = all_text.replace(description_text, description_text + ' - ')
print(result) # prints DescriptionText - 508,22$
当我显示文档时,我看到:
QTextCursor cursor(&mDocument);
cursor.insertText("Hello world! ");
cursor.insertBlock();
cursor.insertText("Goodbye world! ");
cursor.block().setVisible(false);