Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: kuzulis от Август 04, 2010, 13:53



Название: [РЕШЕНО]QTextEdit. Ограничение размера/буфера кол-ва выводимых строк.
Отправлено: kuzulis от Август 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' - но что-то не нашел таких методов.


Название: Re: QTextEdit. Ограничение размера/буфера кол-ва выводимых строк.
Отправлено: lit-uriy от Август 04, 2010, 13:57
вроде была такая тема, именно про этот виджет.


Название: Re: QTextEdit. Ограничение размера/буфера кол-ва выводимых строк.
Отправлено: kuzulis от Август 04, 2010, 14:01
Цитировать
вроде была такая тема, именно про этот виджет.
Дык все перерыл... Не нашел.


Название: Re: QTextEdit. Ограничение размера/буфера кол-ва выводимых строк.
Отправлено: Igors от Август 04, 2010, 14:18
Код
C++ (Qt)
QTextCursor cursor(edit->document()->findBlockByNumber(0));
cursor.select(QTextCursor::BlockUnderCursor);
cursor.removeSelectedText();
edit->setTextCursor(cursor);
 


Название: Re: QTextEdit. Ограничение размера/буфера кол-ва выводимых строк.
Отправлено: kuzulis от Август 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()!!!