Russian Qt Forum

Qt => Общие вопросы => Тема начата: guest от Август 22, 2006, 13:56



Название: проблема с QTextCursor movePosition
Отправлено: 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"

Что я делаю не так?


Название: проблема с QTextCursor movePosition
Отправлено: ElderOrb от Август 22, 2006, 14:26
А что нужно сделать? выделить весь текст? Так есть варианты попроще
QTextEdit::selectAll()


Название: проблема с QTextCursor movePosition
Отправлено: guest от Август 22, 2006, 14:33
нужно пробежаться по всем словам обработать каждое отдельно.


Название: проблема с QTextCursor movePosition
Отправлено: bigirbis от Август 22, 2006, 16:32
А если так попробовать?
Код:
cursor.movePosition(QTextCursor::Start);
while( true )
{
 cursor.select(QTextCursor::WordUnderCursor);
 cursor.movePosition(QTextCursor::NextWord)
 if( cursor.atEnd() )
  break;
}


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


Название: проблема с QTextCursor movePosition
Отправлено: bigirbis от Август 23, 2006, 11:49
Если не секрет, что за метод был переопределен?


Название: проблема с QTextCursor movePosition
Отправлено: guest от Август 23, 2006, 12:52
Цитата: "bigirbis"
Если не секрет, что за метод был переопределен?
никакого метода не было переопределено. Английский текст приведен в качестве примера на котором спотыкается цикл. Т.е. зацикливается на обработке слова "ignore()" хотя должен по идее переходить на следующее слово.


Название: проблема с QTextCursor movePosition
Отправлено: bigirbis от Август 23, 2006, 13:56
Я провел эксперименты:
1. Если любая круглая скобка примыкает к слову справа, то она становится частью слова, но при этом игнорируется.

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

Пиши Тролям, что нашел баг.