Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt GUI _ выравнивиние изображения в QTextEdit

Автор: pussbb 26.1.2010, 12:03

Кто может подсказать как сделать следующее:
вставить картинку(это я могу) скажем QTextEdit и добавить стиль (css) опцию float=.... С возможностью его изменять.


надо сделать обтекание текста вокруг изображения при вставке

Автор: SABROG 26.1.2010, 14:13

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

Автор: pussbb 26.1.2010, 20:02

а как правильно удалить предыдущую. я использовал

lastcursor.deletePreviousChar();
но за вторым разом изменением добавляет пустоту а при дальнейшем использовании вовсе выбивает приложение

Автор: SABROG 26.1.2010, 22:29

Либо textEdit.clear(), либо можно попробовать так:

QTextCursor cursor(textEdit->document());
cursor.currentList()->remove(cursor.block());


Не знаю будет работать или нет.

Автор: pussbb 27.1.2010, 13:17

textEdit.clear() очистит мне весь документ

Автор: SABROG 27.1.2010, 14:14

Цитата(pussbb @ 27.1.2010, 13:17) *
textEdit.clear() очистит мне весь документ

Я не нашел способа удаления QTextBlock (paragraph), добавлять не вопрос, а удалять хрен. Судя по документации для установки нового стиля нужно удалять блок. Надо экспериментировать, может быть обычная очистка текста в конкретном блоке тоже сработает. Всё равно как-то не правильно, наплодить блоков можно, а удалять только через clear() - бред. Хотя судя по исходникам Qt пустой блок (без текста) должен удаляться автоматически.

Автор: pussbb 30.1.2010, 18:12

оказываеться вставить картинку можно и так

void QTextCursor::insertImage ( const QTextImageFormat & format, QTextFrameFormat::Position alignment )
//соответственно
lastcursor.insertImage(image,QTextFrameFormat::FloatLeft);

и все так как надо вставляет .
я уже не знаю с чем експерементировать
А параграф очистить можна так
ui->editor->document()->findBlock(lastcursor.blockNumber()).text().clear();


а потом вставить . но опять таки не всегда правильно работает зараза

получается когда изображение выделить то все работает нормально

и пусть меня заплюют за эту реализацию но работает как надо
   QString name=image.name();
        QString data=ui->editor->document()->toHtml();
       int i = data.indexOf(QString("<img src=\""+name+"\""));
       qDebug()<<i;qDebug()<< data.indexOf("/>",i);
        if (i > 0)
            data.remove(i, data.indexOf("/>",i) + 2);
        ui->editor->document()->setHtml(data);
        lastcursor.insertImage(image,QTextFrameFormat::FloatRight);

естественно надо кое что подправить но зато все работает

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)