Название: Есть одна проблемма с QTextEdit Отправлено: Hort от Июль 31, 2008, 12:27 Вобщем суть проблемы такова:
вставляю в QTextEdit через ->textCursor().insertHtml() тэг с рисунком (<img src="...">), который в свою очередь помещается в тег ссылки (<a href="...">...</a>). если курсор установлен вплотную к картинке и чтото начать набирать - текст получается тоже с форматированием ссылки, а нужно чтобы ссылка была намертво прикрепленна к рисунку и за его пределы не выходила. как можно от этого избавится? Внизу пример картинки Название: Re: Есть одна проблемма с QTextEdit Отправлено: EhTemka от Июль 31, 2008, 16:15 Я тоже с этим сталкивался. НИ чего на ум не пришло кроме как вставлять после вставленого хтмл "\n"
Выглядит это так : Код: QTextCursor cursor = textCursor(); Название: Re: Есть одна проблемма с QTextEdit Отправлено: Hort от Июль 31, 2008, 17:52 частично решил проблемму.
QTextEdit у меня уже был унаследован, так что я его просто немного дополнил. Это я добавил в конструктор: Код: connect(this, SIGNAL(currentCharFormatChanged(const QTextCharFormat&)), this, SLOT(slotIsAnchor(const QTextCharFormat&))); а это сам слот: Код: void TextEdit::slotIsAnchor(const QTextCharFormat& format) теперь соседний текст ссылкой не становится, но внешний вид ссылки всеже остался (синий шрифт и подчеркивание). Может ктонибуть подскажет как от этого избавится? может поможет QTextDocument::setDefaultStyleSheet(), только что туда писать чтобы ссылка была без всякого форматирования? Название: Re: Есть одна проблемма с QTextEdit Отправлено: Hort от Август 01, 2008, 12:20 немного доработал код теперь все работает ок.
Код: document()->setDefaultStyleSheet(QString("a { text-decoration: none; color: %1; }").arg(QApplication::palette().text().color().name())); слот тоже немного доработал: Код: void TextEdit::slotIsAnchor(const QTextCharFormat& format) Этот пример подходит, если не нужны явные текстовые ссылки. если все же форматирование ссылок нужно оставить, то можно в слот добавить также что-то наподобии Код: changedFormat.setFontUnderline(false); |