Не могу найти в интернете информатцию, о установке обработчиков 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)
- Форум QComboBox c множественным выбором (2020)
- Форум Qt QTreeWidget и изменение высоты строки (2017)
- Форум QGraphicsItemGroup: изменение размера содержимого (2021)
- Форум Как сделать перенос строки в таблице? (2023)