Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: выравнивиние изображения в QTextEdit
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt GUI
pussbb
Кто может подсказать как сделать следующее:
вставить картинку(это я могу) скажем QTextEdit и добавить стиль (css) опцию float=.... С возможностью его изменять.


надо сделать обтекание текста вокруг изображения при вставке
SABROG
setHtml(), а в коде уже используй css. Если нужно менять стиль, то предыдущий блок полностью затираешь и вставляешь новый - измененный.
pussbb
а как правильно удалить предыдущую. я использовал
lastcursor.deletePreviousChar();
но за вторым разом изменением добавляет пустоту а при дальнейшем использовании вовсе выбивает приложение
SABROG
Либо textEdit.clear(), либо можно попробовать так:

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


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

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

естественно надо кое что подправить но зато все работает
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.