crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> проблема при удалении изображения из QTextEdit
Rio9
  опции профиля:
сообщение 29.4.2010, 14:46
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 8
Регистрация: 29.4.2010
Пользователь №: 1675

Спасибо сказали: 0 раз(а)




Репутация:   0  


Столкнулся с такой проблемой. Имеется QTextEdit, в него програмно добавляется изображение:

lastcursor.insertImage(img,QTextFrameFormat::FloatLeft);

в итоге в html сохраняется как положено: <img src="any.jpg" style="float: left;">

Теперь идём дальше. Если удалить изображение из окна редактирования, то курсор остается на том месте, где была граница изображения. Как бы область редактора, где до этого было изображение - заблокировано.

При перезапуске редактора проблема исчезает, но это ведь не решение.

Прошу совета.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Rio9
  опции профиля:
сообщение 29.4.2010, 15:30
Сообщение #2


Новичок


Группа: Новичок
Сообщений: 8
Регистрация: 29.4.2010
Пользователь №: 1675

Спасибо сказали: 0 раз(а)




Репутация:   0  


не проверял, но не дуаю что у меня глюк. Вот почему: если не задавать обтекание, то всё возвращается на место как положено. Проблема появляется только с указанным обтеканием.
Но я обязательно проверю завтра на других компьютерах
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kibsoft
  опции профиля:
сообщение 29.4.2010, 15:39
Сообщение #3


Участник
**

Группа: Участник
Сообщений: 180
Регистрация: 21.7.2009
Из: Самара
Пользователь №: 928

Спасибо сказали: 14 раз(а)




Репутация:   2  


Цитата(Rio9 @ 29.4.2010, 16:30) *
не проверял, но не дуаю что у меня глюк. Вот почему: если не задавать обтекание, то всё возвращается на место как положено. Проблема появляется только с указанным обтеканием.
Но я обязательно проверю завтра на других компьютерах

В крайнем случае можно попробовать deletePreviousChar() из QTextCursor, чтобы курсор вернулся. Реализовать можно например в keyPressEvent.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Rio9
  опции профиля:
сообщение 30.4.2010, 10:56
Сообщение #4


Новичок


Группа: Новичок
Сообщений: 8
Регистрация: 29.4.2010
Пользователь №: 1675

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(kibsoft @ 29.4.2010, 16:39) *
В крайнем случае можно попробовать deletePreviousChar() из QTextCursor, чтобы курсор вернулся. Реализовать можно например в keyPressEvent.

На других компьютерах проблема так же остается проблемой...
А что даст deletePreviousChar(), если в html ничего лишнего нет? ни параграфа, ни отступа, ничего...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kibsoft
  опции профиля:
сообщение 30.4.2010, 22:25
Сообщение #5


Участник
**

Группа: Участник
Сообщений: 180
Регистрация: 21.7.2009
Из: Самара
Пользователь №: 928

Спасибо сказали: 14 раз(а)




Репутация:   2  


Цитата(Rio9 @ 30.4.2010, 11:56) *
Цитата(kibsoft @ 29.4.2010, 16:39) *
В крайнем случае можно попробовать deletePreviousChar() из QTextCursor, чтобы курсор вернулся. Реализовать можно например в keyPressEvent.

На других компьютерах проблема так же остается проблемой...
А что даст deletePreviousChar(), если в html ничего лишнего нет? ни параграфа, ни отступа, ничего...

Просто у меня встречалась такая проблема, что при удалении картинки в TextEdit программа рушилась полностью, deletePreviousChar помог (хотя это не совсем правильно, но хоть какой-то выход). Поэтому просто в keyPressEvent смотри предыдущий символ картинка или нет, если да, то выполняй deletePreviousChar(), если нет, то продолжай обрабатывать стандартными действиями.
void SendTextEdit::keyPressEvent(QKeyEvent *e)
{
if (e->key()==Qt::Key_Backspace && textCursor().charFormat().toImageFormat().isValid()) {
        QTextCursor tempCursor=textCursor();
        tempCursor.deletePreviousChar();
        setTextCursor(tempCursor);
    }
    else
        QTextEdit::keyPressEvent(e);
}

Что-то типа такого..
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


7 чел. читают эту тему (гостей: 7, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.12.2024, 14:20