Обновление QTextDocument, пока пользователь печатает - PullRequest
0 голосов
/ 30 мая 2018

Я довольно новичок в Qt, и я хотел бы сделать эту вещь, которая кажется мне простой, хотя я действительно не знаю, с чего начать.

Я использую QTextEdit, стиль которого я 'Я хотел бы обновить, когда пользователь печатает, например, поместить все между двумя звездами жирным шрифтом (я пытаюсь сделать простой редактор Markdown).

Хотя, как я уже сказал, я не знаю, куда идти.Я хотел использовать сигнал textChanged, но если я сделаю что-то вроде

on textChanged
    analyze the new text
    textEdit->setHtml(formatted new text)

Слот просто вызывает себя (и мое приложение, наконец, падает), потому что мой onTextChanged меняет текст ...

Что мне делать?Я думал, что мог бы работать с потоками (анализируя, пока пользователь печатает), но я боюсь, что это может быть сложно, так как это приведет к тому, что поток, не являющийся пользовательским интерфейсом, получит доступ и изменит вещи в пользовательском интерфейсе ...

Я действительно ищу советы по дизайну здесь ...

Спасибо

1 Ответ

0 голосов
/ 30 мая 2018

Вы можете заключить setHtml (QString) между двумя вызовами в blockSignals (bool) , чтобы запретить QTextEdit снова генерировать сигнал textChanged ().

textEdit->blockSignals(true);
textEdit->setHtml(text);
textEdit->blockSignals(false);

Незнать, если это лучший выбор дизайна.Вы можете попытаться изучить API QTextEdit и посмотреть, стоит ли его наследовать от него и специализировать его поведение, даже если я не считаю, что он был разработан для наследования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...