2014-03-04 2 views
0

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

Например: У меня есть изображение размеров: 300x300. Мне нужно добавить текст, начинающийся с места (20, 20) изображения, и убедитесь, что текст не течет за пределы ширины изображения.

Что-то, как показано ниже:

Sample output view (pic borrowed from Windows7)

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

+0

Вы хотите нарисовать текст поверх изображения (в предопределенном прямоугольнике)? Или нужен редактор с фоновым изображением? Или что-то другое? –

+0

текст над изображением (в предопределенном прямоугольнике), где rect является границей самого изображения – go4sri

+1

http://qt-project.org/doc/qt-4.8/qpainter.html#drawText-11? –

ответ

0

Есть ли способ представить графический элемент в QTextEdit? Если нет, то какой правильный подход?

Вы можете посмотреть на это другим способом и добавить QTextEdit в QGraphicsScene. Графическая сцена предоставляет QGraphicsProxyWidget для добавления стандартных виджетов Qt.

Таким образом, вы можете создать QGraphicsScene и QGraphicsView. Добавьте образ QGraphicsPixmapItem для изображения и добавьте элемент QTextEdit с вызовом QGraphicsScene :: addWidget, который возвращает QGraphicsProxyWidget, позволяя вам размещать, масштабировать и изменять размер виджета.

В качестве альтернативы вы можете начать с QGraphicsItem, наследовать от этого и создать свой собственный объект, который инкапсулирует образ и прокси-объект QTextEdit.

Есть и другие способы решения этой проблемы, но я бы, вероятно, пошел на заказ QGraphicsItem. Это также зависит от вашей спецификации, но вы можете добавлять текстовые элементы в графическую сцену без QTextEdit, хотя вам, вероятно, придется реализовать функцию редактирования, если это необходимо.