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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: [РЕШЕНО]QTextEdit. Ограничение размера/буфера кол-ва выводимых строк.  (Прочитано 6416 раз)
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« : Август 04, 2010, 13:53 »

Доброго времени.

Имеется приложение в котором в QTextEdit, например по сигналу от таймера постоянно добавляется текст. Так вот, необходимо сделать ограничение на кол-во добавляемых строк так, чтобы при достижении лимита (скажем в 10 строк) вновь добавляемые строки добавляемые в конец начали как бы "выталкивать" вверх те строки что были выше... Само собой, выталкиваемые строки должны теряться.

т.е., например:

1. В первый момент в QTextEdit имеем:
Цитировать
String #1

2. Далее после добавления строки:
Цитировать
String #1
String #2

3. Далее после добавления строк и достижения лимита:
Цитировать
String #1
String #2
...
String #10

2. Далее после добавления строки №11 (превышения лимита):
Цитировать
String #2
String #3
...
String #10
String #11

и т.п.

Можно ли это реализовать как - нить попрощеи оптимальнее?

У меня сначала были идеи при превышении лимита строк получать из QTextEdit указатель на QString и вырезать из нее самый первый кусок до символа '\n' - но что-то не нашел таких методов.
« Последнее редактирование: Август 04, 2010, 14:44 от kuzulis » Записан

ArchLinux x86_64 / Win10 64 bit
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #1 : Август 04, 2010, 13:57 »

вроде была такая тема, именно про этот виджет.
Записан

Юра.
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #2 : Август 04, 2010, 14:01 »

Цитировать
вроде была такая тема, именно про этот виджет.
Дык все перерыл... Не нашел.
Записан

ArchLinux x86_64 / Win10 64 bit
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #3 : Август 04, 2010, 14:18 »

Код
C++ (Qt)
QTextCursor cursor(edit->document()->findBlockByNumber(0));
cursor.select(QTextCursor::BlockUnderCursor);
cursor.removeSelectedText();
edit->setTextCursor(cursor);
 
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #4 : Август 04, 2010, 14:43 »

Спс, но я нашел другое решение:

Код:
TraceWidget::TraceWidget(QWidget *parent)
        : QTextEdit(parent)
{
    this->setReadOnly(true);
    this->setUndoRedoEnabled(false);
    this->setWordWrapMode(QTextOption::NoWrap); //тут отключаем перенос слов/символов


    this->document()->setMaximumBlockCount(10); //вот тут ограничиваемся 10 - ю строками!!!
}

Вроде работает....

Добавляю строки, используя метод append()!!!
Записан

ArchLinux x86_64 / Win10 64 bit
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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