C++ 在用户键入时更新QTextDocument
我对Qt还很陌生,我想做一件对我来说很简单的事情,尽管我真的不知道从哪里开始 我使用了一个QTextEdit,我想在用户键入时更新它的样式,例如,将两颗星之间的所有内容都用粗体显示(我正在尝试制作一个基本的标记编辑器) 不过,正如我所说,我不知道该去哪里。我想使用C++ 在用户键入时更新QTextDocument,c++,qt,C++,Qt,我对Qt还很陌生,我想做一件对我来说很简单的事情,尽管我真的不知道从哪里开始 我使用了一个QTextEdit,我想在用户键入时更新它的样式,例如,将两颗星之间的所有内容都用粗体显示(我正在尝试制作一个基本的标记编辑器) 不过,正如我所说,我不知道该去哪里。我想使用textChanged信号,但如果我执行类似的操作 on textChanged analyze the new text textEdit->setHtml(formatted new text) 插槽正在自动
textChanged
信号,但如果我执行类似的操作
on textChanged
analyze the new text
textEdit->setHtml(formatted new text)
插槽正在自动调用(我的应用程序最终崩溃),因为我的onTextChanged
正在更改文本
我该怎么办?我想我可以使用线程(在用户键入时进行分析),但我担心这样做可能会很困难,因为这会导致非UI线程访问和修改UI中的内容
我真的在这里寻找设计建议
谢谢您可以在两次调用之间包装setHtml(QString),以防止QTextEdit再次发出textChanged()信号
textEdit->blockSignals(true);
textEdit->setHtml(text);
textEdit->blockSignals(false);
不知道这是不是最好的设计选择。您可以尝试研究QTextEdit API,看看它是否值得继承,并专门化它的行为,即使我不相信它是为了被继承而设计的 谢谢你。我会调查的。现在,我已经找到了我想要实现的目标。