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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Выделение строк текста и перевод курсора  (Прочитано 3348 раз)
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; ... никак не пойму в чем ошибка?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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