PyQt5 выделяет текст в нескольких полях QTextEdit - PullRequest
0 голосов
/ 09 сентября 2018

Я пытаюсь создать нечто похожее на это в PyQt5: https://www.screencast.com/t/1FikGosKbS

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

Как я могу позволить пользователю перетаскивать выделенный текст в нескольких полях QTextEdit? Или есть лучший подход к этому?

1 Ответ

0 голосов
/ 18 декабря 2018

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

QTextEdit, QTextDocument, QTextCursor используются полностью.

1. Чтобы понять блок .

2.Для использования QTextBlockUserData (если хотите.)

3.Чтобы использовать QGraphicsItem в качестве узлов.

4. Чтобы перейти на другую страницу, мы добавляем новый QTextEdit на QStackedWidget или заменяем QTextDocument из QTextEdit.

5.Чтобы сделать блок подузлов, вы можете координировать отступ блоков.

QTextBlock - это данные только для чтения в документе.

Вы делаете QTextBlockUserData и устанавливаете его в блок.

Если вы выбираете несколько блоков, которые хотите перетаскивать, вы используете QTextCursor и movePosition методы с последовательностью.

Узлы этого приложения не могут быть QTextListFormat, потому что мы не можем обрабатывать щелчок мыши по стилю. Но вы можете вставить пустой стиль QTextListFormat.

Истина узлов может быть QGraphicsItem.

Вы можете назначить его каждой начальной позиции блоков, и элемент также может иметь данные блока.

Трудно позаботиться о связи между узлами и блоками. Заранее необходимо установить QGraphicsView & QGraphicsScene.

Я вставляю много данных в контейнер.

Что мы должны контролировать с помощью узлов или блока?

Моя пробная версия .

1.Ноды и текст enter image description here

2. На другую страницу enter image description here

3.Суб-узлы и блоки enter image description here

4.Закрыть подузлы и блоки enter image description here

Мое испытание не завершено, но оно будет завершено с выдержкой. Логично, я думаю, что смогу пойти на шаг с этими комбинациями до хорошего момента. Но это будет трудно ...

Эти узлы сделаны из QGraphicsItem и размещены в каждом блоке. Вы должны рассчитать положение и пересчитать во время редактирования.

Изображение курсора мыши на этих изображениях удалено. Это странный скриншот.

...