Russian Qt Forum

Qt => Вопросы новичков => Тема начата: demaker от Декабрь 08, 2014, 14:57



Название: QTextEdit
Отправлено: demaker от Декабрь 08, 2014, 14:57
Скажите, а можно QTextEdit добавлять текст не в конец
Код:
append(QString)
а в начало.

Пытался реализовать с помощью QTextCursor и QCursor, но никак.
Подскажите как можно добиться такого свойства???


Название: Re: QTextEdit
Отправлено: kambala от Декабрь 08, 2014, 15:11
перемещаешь QTextCursor в начало, потом textEdit->insert...(), потом восстанавливаешь позицию QTextCursor


Название: Re: QTextEdit
Отправлено: demaker от Декабрь 08, 2014, 15:26
Делаю так
Код
C++ (Qt)
QTextCursor cursor = ui->txtEdit->textCursor();
cursor.movePositiion(QTextCursor::Start,QTextCursor::MoveAnchor);
ui->txtEdit->insertPlainText(str);
ui->txtEdit->insertPlainText("\n");
cursor.movePositiion(QTextCursor::Start,QTextCursor::MoveAnchor);
 

Но что-то не то???


Название: Re: QTextEdit
Отправлено: gil9red от Декабрь 08, 2014, 15:40
Код
C++ (Qt)
const QTextCursor & lastCursor = ui->textEdit->textCursor();
QTextCursor curCursor(ui->textEdit->document());
curCursor.movePosition(QTextCursor::Start);
curCursor.insertText(ui->lineEdit->text());
ui->textEdit->setTextCursor(lastCursor);

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


Название: Re: QTextEdit
Отправлено: demaker от Декабрь 08, 2014, 15:43
СПСБ


Название: Re: QTextEdit
Отправлено: demaker от Декабрь 08, 2014, 17:12
Сделал проще
Код
C++ (Qt)
QTextCursor cursor(ui->txtEdit->document());
cursor.movePosition(QTextCursor::Start);
ui->txtEdit->setTextCursor(cursor);
ui->txtEdit->insertPlainText(str+"\n");
 

Скажите а как сделать чтобы скролл(QScrollArea) оставался на начальной позиции т.е по вновь добавленному тексту ???


Название: Re: QTextEdit
Отправлено: gil9red от Декабрь 08, 2014, 17:48
перемещаешь QTextCursor в начало, потом textEdit->insert...(), потом восстанавливаешь позицию QTextCursor

ну я поэтому описанию код делал :)

Сделал проще
Код
C++ (Qt)
QTextCursor cursor(ui->txtEdit->document());
cursor.movePosition(QTextCursor::Start);
ui->txtEdit->setTextCursor(cursor);
ui->txtEdit->insertPlainText(str+"\n");
 


у вас просто перемещает в начало документа :)


Название: Re: QTextEdit
Отправлено: demaker от Декабрь 08, 2014, 17:57
Скажите а как сделать чтобы скролл(QScrollArea) оставался на начальной позиции т.е по вновь добавленному тексту


Название: Re: QTextEdit
Отправлено: kambala от Декабрь 08, 2014, 18:21
руками (программно) проскроллить наверное придется


Название: Re: QTextEdit
Отправлено: demaker от Декабрь 08, 2014, 18:24
руками (программно) проскроллить наверное придется

Ну не очень смешно :(


Название: Re: QTextEdit
Отправлено: kambala от Декабрь 08, 2014, 19:13
я и не смеялся. документацию бы открывать научился...


Название: Re: QTextEdit
Отправлено: demaker от Декабрь 09, 2014, 12:21
я и не смеялся. документацию бы открывать научился...

СПСБ за совет

сделал так
Код
C++ (Qt)
ui->textEdit->scroll(0,0);