在用户键入时更新 QTextDocument
Updating QTextDocument while user is typing
我对Qt很陌生,我想做一件对我来说看起来很简单的事情,尽管我真的不知道从哪里开始。
我使用QTextEdit,我想在用户键入时更新其样式,例如,将两颗星之间的所有内容都以粗体显示(我正在尝试制作一个基本的Markdown编辑器(。
虽然,正如我所说,我不知道该去哪里。我想使用textChanged
信号,但是如果我做类似的事情
on textChanged
analyze the new text
textEdit->setHtml(formatted new text)
老虎机只是在调用自己(我的应用程序最终崩溃(,因为我的onTextChanged
正在更改文本......
我该怎么办?我以为我可以使用线程(在用户键入时进行分析(,但我担心这样做可能很困难,因为它会导致非 UI 线程访问和修改 UI 线程中的内容......
我真的在这里寻找设计建议...
谢谢
您可以将 setHtml(QString( 包装在对 blockSignals(bool( 的两次调用之间,以防止 QTextEdit 再次发出 textChanged(( 信号。
textEdit->blockSignals(true);
textEdit->setHtml(text);
textEdit->blockSignals(false);
不知道这是否是最好的设计选择。你可以尝试研究QTextEdit API,看看它是否值得从中继承,并专门化它的行为,即使我不相信它被设计为被继承。
相关文章:
- 从C++本机插件更新Vector3数组
- QGraphicsPolygonItem在拖动时未更新QPolygonF坐标
- cmake更新缓存的变量
- 更新到莫哈韦后出现cmath错误
- OpenMP:并行更新数组总是需要减少数组吗
- 为什么我的变量没有更新,我的 LED 没有亮起?
- 指针没有更新它在void函数内部指向的值
- 如何在c++中获取要更新的值
- 已修改的LinkedList未在文本文件本身中更新
- Qt:当QListView获得新条目时,如何更新QStringList
- 更新的矢量元素不打印
- 如何使用按钮更新GTK3图像以使用C++从相机捕获图片
- 如何在ECS框架中更新组件数据和通知系统
- 从VS 2015更新3更新到VS2015更新3 d后浮点计算行为不同的原因
- 如果我想在没有更新编译器的情况下使用新功能,该怎么办?
- 如何在 C++11 中查找和更新向量中的一个嵌套结构
- (SFML)按下键时,播放器构造函数未使用正确的动画进行更新
- 在 emscripten 网页汇编正在运行期间更新进度条?
- 在运行时使用范围更新结果
- 在用户键入时更新 QTextDocument