Russian Qt Forum
Ноябрь 24, 2024, 00:46 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: проблема с QTextCursor movePosition  (Прочитано 5641 раз)
guest
Гость
« : Август 22, 2006, 13:56 »

Делаю так:
bool mooved = cursor.movePosition(QTextCursor::Start);
while(mooved && cursor.position() < toPlainText().size()) {
cursor.select(QTextCursor::WordUnderCursor);
mooved = cursor.movePosition(QTextCursor::NextWord)
}

Возникает сразу две проблемы:
1) при окончании текста mooved всё равно в true
2) если QTextEdit такой текст "If you reimplement this handler, it is very important that you ignore() the event if you do not understand it, so that the widget's parent can interpret it", то цикл висит на обработке "ignore"

Что я делаю не так?
Записан
ElderOrb
Гость
« Ответ #1 : Август 22, 2006, 14:26 »

А что нужно сделать? выделить весь текст? Так есть варианты попроще
QTextEdit::selectAll()
Записан
guest
Гость
« Ответ #2 : Август 22, 2006, 14:33 »

нужно пробежаться по всем словам обработать каждое отдельно.
Записан
bigirbis
Гость
« Ответ #3 : Август 22, 2006, 16:32 »

А если так попробовать?
Код:
cursor.movePosition(QTextCursor::Start);
while( true )
{
 cursor.select(QTextCursor::WordUnderCursor);
 cursor.movePosition(QTextCursor::NextWord)
 if( cursor.atEnd() )
  break;
}
Записан
guest
Гость
« Ответ #4 : Август 23, 2006, 11:34 »

Цитата: "bigirbis"
А если так попробовать?
Код:
cursor.movePosition(QTextCursor::Start);
while( true )
{
 cursor.select(QTextCursor::WordUnderCursor);
 cursor.movePosition(QTextCursor::NextWord)
 if( cursor.atEnd() )
  break;
}
это не решает второй проблемы.
Записан
bigirbis
Гость
« Ответ #5 : Август 23, 2006, 11:49 »

Если не секрет, что за метод был переопределен?
Записан
guest
Гость
« Ответ #6 : Август 23, 2006, 12:52 »

Цитата: "bigirbis"
Если не секрет, что за метод был переопределен?
никакого метода не было переопределено. Английский текст приведен в качестве примера на котором спотыкается цикл. Т.е. зацикливается на обработке слова "ignore()" хотя должен по идее переходить на следующее слово.
Записан
bigirbis
Гость
« Ответ #7 : Август 23, 2006, 13:56 »

Я провел эксперименты:
1. Если любая круглая скобка примыкает к слову справа, то она становится частью слова, но при этом игнорируется.

2. Очень похоже на то, что сочетание последовательно идущих скобок (при чем, любых) повергает парзер Qt в ужас. После чего, парсер для поиска следующего слова откатывается назад - отсюда вечный цикл ( вывод следует из того, что movePosition возвращает true).

Пиши Тролям, что нашел баг.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.093 секунд. Запросов: 20.