Не могу найти в интернете информатцию, о установке обработчиков UserFormatedText в RichText, который устанавливается в QTextEdit
Есть вот такой код:
static const int IconFormatType = QTextFormat::UserObject + 1;
//-------------------------------------------
// TextIconFormat
//-------------------------------------------
class TextIconFormat : public QTextCharFormat
{
public:
TextIconFormat(const QString &iconName, const QString &text);
enum Property {
IconName = QTextFormat::UserProperty + 1,
IconText = QTextFormat::UserProperty + 2
};
};
TextIconFormat::TextIconFormat(const QString &iconName, const QString &text) : QTextCharFormat()
{
Q_UNUSED(text);
setObjectType(IconFormatType);
QTextFormat::setProperty(IconName, iconName);
QTextFormat::setProperty(IconText, text);
}
//------------------------------------------------------
// IconTextObjectInterface
//------------------------------------------------------
class TextIconHandler : public QObject, public QTextObjectInterface
{
//Q_OBJECT
Q_INTERFACES(QTextObjectInterface)
public:
TextIconHandler(QObject *parent = 0);
virtual QSizeF intrinsicSize(QTextDocument *doc, int posInDocument, const QTextFormat &format);
virtual void drawObject(QPainter *painter, const QRectF &rect, QTextDocument *doc, int posInDocument, const QTextFormat &format);
};
TextIconHandler::TextIconHandler(QObject *parent) : QObject(parent)
{
}
QSizeF TextIconHandler::intrinsicSize(QTextDocument *doc, int posInDocument, const QTextFormat &format)
{
Q_UNUSED(doc);
Q_UNUSED(posInDocument)
const QTextCharFormat charFormat = format.toCharFormat();
return IconsetFactory::instance()->iconPixmap(charFormat.stringProperty(TextIconFormat
::IconName)).size();
}
void TextIconHandler::drawObject(QPainter *painter, const QRectF &rect, QTextDocument *doc, int posInDocument, const QTextFormat &format)
{
qDebug() << "drawObject";
Q_UNUSED(doc);
Q_UNUSED(posInDocument);
const QTextCharFormat charFormat = format.toCharFormat();
const QPixmap pixmap = IconsetFactory::instance()->iconPixmap(charFormat.stringProperty(TextIconFormat
::IconName));
painter->drawPixmap(rect, pixmap, pixmap.rect());
}
//------------------------------------------------
// StilRichText
//------------------------------------------------
void StilRichText::install(QTextDocument *doc)
{
Q_ASSERT(doc);
static TextIconHandler *handler = 0;
if (!handler) handler = new TextIconHandler(qApp);
doc->documentLayout()->registerHandler(IconFormatType, handler);
}
остальная часть кода ИМХО маловажна. Основное назначение - следующее: замена текста на графику, точнее смайлы.
Функция install проходит, обработчик создается, регистрируется.
Но просмотреть дебугером (gdb, ddd) что происходит внутри Qt - не возможно, ибо скомпилино без "debug".
Фунции обработчика drawObject и intrinsicSize не вызываются вообще.
Есть подозрение, что какой-то текст он не считает IconFormatType, тогда как заставить его считать его именно таким?
А может не в этом дело...
Может кто-то сталкивался с подобной проблемой? или знает как решить. Буду благодарен за любую информацию относительно сабжа. Ах, да Qt 4.3
Ответ на:
комментарий
от irq
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Перенос текста в ячейке в qtableView? (2020)
- Форум C++ model + QML = segmentation fault (2013)
- Форум QComboBox c множественным выбором (2020)
- Форум Забавное поведение при отображении QAbstractItemModel на QSortFilterProxyModel (2013)
- Форум [QsciScintilla]Проблема с отображением Кириллицы (2010)
- Форум Qt QTreeWidget и изменение высоты строки (2017)
- Форум QGraphicsItemGroup: изменение размера содержимого (2021)
- Форум Как сделать перенос строки в таблице? (2023)
- Форум Qt (2016)
- Форум QT (2010)