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; ... никак не пойму в чем ошибка?
|