2015-12-07 2 views
1

У меня есть QTextEdit и вы хотите, чтобы пользователь мог набирать богатый текст, который затем автоматически (правильно) отображается в виджетах (так: отформатирован).QTextEdit: ввод текста в формате HTML/richttext

Он отлично работает при программном программировании (с использованием setText()), но не при вводе вручную. См. Рисунок ниже .. «Вход» задается с помощью setText, следующая строка вводится вручную. Я хотел бы эта линия автоматически отформатированный

enter image description here

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

+0

Итак, если я правильно понял это, вы хотите, чтобы ваше редактирование линии было достаточно умным, чтобы интерпретировать html и форматировать его соответственно, когда в нем написан какой-то html ...? – PRIME

+0

Хотя он не отвечает на ваш вопрос, но, тем не менее, я чувствую, что если у вас столько требований к форматированию, вы должны использовать QTextEdit вместо QLineEdit – PRIME

+0

Правильно, он должен интерпретировать (подмножество Qt) HTML (что он способен делать). Кстати, я использую QTextEdit. Возможно, это похоже на QLineEdit из-за макета – Ben

ответ

1

Поскольку «JinX» уже сказал, что это не будет настолько интуитивно, если вы попытаетесь захватить каждое ключевое событие, а затем попытайтесь изменить текст для визуализации в HTML. Хотя вы можете использовать некоторые специальные последовательности клавиш, например «shift + return key», чтобы изменить текст текущей строки/всего textedit на html-форматированный. Это всего лишь предложение. В этом случае больше, чем реализация, это также то, что пользователь ожидает. Изменение текста 1 строки/всего текста с простого на HTML было бы легко достигнуть.

+0

«... используйте некоторые специальные последовательности клавиш, например« shift + return key », чтобы изменить текст текущей строки/всего textedit на html ..« Это отличная идея. – Ben

+0

Хм, любая идея, как изменить кусочки простого текста на HTML? textField-> setText (textField-> toHTML()), похоже, не делает трюк – Ben

+0

вы можете попробовать это ..? textField-> setHtml (textField-> toPlainText()); – PRIME

2

Руководство пользователя, напечатанное html, получает экранированное изображение, < станет < и т. Д. ,

Вы не сможете отредактировать его, если это не так, по понятным причинам. You может попробуйте добавить кнопку [render] или что-то в этом роде, чтобы отобразить введенный текст в html. Попытка рендеринга при нажатии клавиши очень опасна, потому что это делает его ужасно неудобным и интуитивно понятным, чтобы набрать что-то, а затем волшебным образом изменить выход. Также незавершенная разметка, вероятно, бросит палку в ваше колесо.

Также вставка из богатого текстового источника (например, веб-страницы) сохраняет форматирование.

Смежные вопросы