我对Qt很新,我想做一件对我来说很简单的事情,虽然我真的不知道从哪里开始。
我使用了一个QTextEdit,我想在用户输入时更新它的样式,例如,将所有内容放在两个星形之间以粗体显示(我正在尝试制作一个基本的Markdown编辑器)。
尽管如我所说,我不知道该往哪里去。我想使用textChanged
信号,但如果我做了类似
on textChanged
analyze the new text
textEdit->setHtml(formatted new text)
插槽只是调用自己(我的应用程序最终崩溃)因为我的onTextChanged
正在更改文本...
我该怎么办?我在想我可以使用线程(在用户输入时进行分析),但我担心这样做可能很困难,因为这会导致非UI线程访问和修改UI中的内容...
我真的在这里寻找设计建议......
由于
答案 0 :(得分:0)
您可以在两次调用blockSignals(bool)之间包装setHtml(QString),以防止QTextEdit再次发出textChanged()信号。
textEdit->blockSignals(true);
textEdit->setHtml(text);
textEdit->blockSignals(false);
不知道它是否是最佳设计选择。您可以尝试研究QTextEdit API,看看它是否值得继承它并专门化它的行为,即使我不相信它是为了继承而设计的。