Название: Выделение строк текста и перевод курсора Отправлено: Belliever от Февраль 26, 2011, 14:26 Доброго времени суток!
Программа должна работать следующим образом: есть строки, в конце каждой строки символ ";", подсчитываю его как число строк. Программа из одного окна должна выводить во второе окно выделенные строки, причем все строки должны выводиться поотдельности. Т.е. надо посчитать число выделенных строк и затем вывести во второе окно все строки поотдельности. Вот кусок кода из программы: QTextCursor inpWindCursor = inpWind->textCursor(); QTextCursor outWindCursor = outWind->textCursor(); if (inpWindCursor.hasSelection()) { QString strFullText = inpWindCursor.selectedText(); // анализирую число ";" - число строк QRegExp rx(";"); int count = 0; int pos = 0; while ((pos = rx.indexIn(strFullText, pos)) != -1) { ++count; pos += rx.matchedLength(); } // перевожу курсор в начало выделенного блока inpWindCursor.movePosition(QTextCursor::StartOfBlock); for (int i = 1; i < count; i++) { inpWindCursor.movePosition(QTextCursor::StartOfLine); inpWindCursor.movePosition(QTextCursor::EndOfLine, QTextCursor::KeepAnchor); str = inpWindCursor.selectedText(); // вывожу в "исходящее" окно строки outWindCursor.insertText(str); // перевожу курсор на 1 строку вниз inpWindCursor.movePosition(QTextCursor::Down); } } Если я выделяю текст снизу вверх - т.е. когда каретка оказывается на первой выделенной строке, то строки передаются в "исходящее" окно корректно, т.е. с первой выделяемой до последней. Однако, если я выделяю текст сверху вниз - когда корретка оказывается на последней строке, то вывод в "исходящее" окно производиться начиная с последней выделенной строки, затем выводится строка которая находится ниже последней выделяемой и т.д. Например, есть строки: 1; 2; 3; 4; 5; 6; Если я выделяю сверху вниз строки 1; 2; 3;, то выводятся строки 3; 4; 5; ... никак не пойму в чем ошибка? |