Редактор Qt WYSIWYG - не редактируемые / сгенерированные регионы - PullRequest
1 голос
/ 10 сентября 2010

Я занимаюсь разработкой редактора документов WYSIWYG.Редактор построен на основе инфраструктуры Qt, потому что Linux / KDE является основной платформой, на которой он будет работать.

До сих пор я использовал виджет QTextEdit и получил базовое редактирование и форматирование текста. Однако яостановитесь на том, как выполнить следующее требование:

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

Вы должны бытьвозможность выбрать стиль для абзаца текста (заголовок 1, заголовок 2, ..., абзац), и если вы выберете стиль заголовка, то перед строкой будет стоять номер раздела.

Например,абзац, содержащий текст « Спецификация проекта » со стилем «заголовок 3», может отображаться как:

3.4.2 Спецификация проекта

Гдепрефиксный номер раздела ' 3.4.2 ' был создан автоматически.Номер раздела должен обновляться по мере того, как заголовки вставляются и удаляются над ним.Пользователь не должен иметь возможность изменять или удалять этот префикс самостоятельно.Если они удаляют префикс, тогда абзац должен вернуться к стилю ' абзац ', а не оставаться заголовком.

Поскольку заголовки вставлены / изменены / удалены, оглавление должноавтоматически обновляться.Пользователь также не должен иметь возможности изменять или удалять оглавление.

Я застрял в том, как реализовать эту функцию в моем редакторе.Возможно, я думал о сохранении дерева нередактируемых диапазонов (диапазонов, которые включают оглавление и каждый из префиксов), и каждый раз, когда изменяется позиция курсора / текущий выбор, я устанавливаю элемент управления QTextEdit только для чтения, если выбор перекрывается иликурсор находится внутри диапазона.Но затем возникает проблема поддержания всех этих диапазонов в актуальном состоянии (перестройка дерева) каждый раз, когда что-то изменяется, что было бы довольно часто в редакторе WYSIWYG.

Я застрял в том, как действовать иБуду признателен за любые советы по этому вопросу.

1 Ответ

0 голосов
/ 13 сентября 2010

IMO, вам не нужно добавлять эти числа в редакторе: просто объявите их с помощью CSS и позвольте средству визуализации HTML добавить / отобразить их.

...