如何在QTextEdit中设置文本块的可见性?

时间:2010-04-23 11:31:56

标签: qt pyqt

我试图在QTextEdit中隐藏文本块,但它不起作用:

block = textedit.document().begin()
block.setVisible(False)

此代码适用于QPlainTextEdit,但不适用于QTextEdit。在文档中,我没有发现它如何适用于QTextEdit,只需遵循:

  

void QTextBlock :: setVisible(bool visible)   设置块的可见性   可见。

     

这个功能是在Qt中引入的   4.4。

     

另见isVisible()。

如何在QTextEdit中隐藏块?

提前谢谢

2 个答案:

答案 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);