Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: C.H. от Октябрь 05, 2005, 10:46



Название: QT4 QTextEdit cursor positon
Отправлено: C.H. от Октябрь 05, 2005, 10:46
Как в QT4 опеределить положение курсора в QTextEdit?
в Q3 было getCursorPosition ( int * para, int * index ).
А Q4 уже нема :(
Чё делать???

Пока накопал такое:

QTextEdit  *textEdit;
QTextCursor c;
c = textEdit->textCursor();
c.position() но эта фигня возвращает абсолютное положение в документе.
А хотелось бы знать строку и колонку (типа Х и У) курсора


Название: Re: QT4 QTextEdit cursor positon
Отправлено: KADABRA от Октябрь 05, 2005, 16:46
Цитата: "C.H."
Как в QT4 опеределить положение курсора в QTextEdit?
в Q3 было getCursorPosition ( int * para, int * index ).
А Q4 уже нема :(
Чё делать???

Пока накопал такое:

QTextEdit  *textEdit;
QTextCursor c;
c = textEdit->textCursor();
c.position() но эта фигня возвращает абсолютное положение в документе.
А хотелось бы знать строку и колонку (типа Х и У) курсора

А cursorForPosition() не подойдёт? И может cursorRect()?


Название: Re: QT4 QTextEdit cursor positon
Отправлено: C.H. от Октябрь 06, 2005, 13:34
Цитата: "KADABRA"
А cursorForPosition() не подойдёт? И может cursorRect()?

К сожелению нет :(
Эти функции возвращают велисину in viewport coordinates


Название: QT4 QTextEdit cursor positon
Отправлено: C.H. от Октябрь 12, 2005, 11:13
Тут народо подкинул идею
Код:

class MultiLineEdit : public QTextEdit{

int32 MultiLineEdit :: GetIndex (const QTextCursor &crQTextCursor ){
  QTextBlock           b;
  int                  column = 1;
  b = crQTextCursor.block();
  column = crQTextCursor.position() - b.position();
}

int32 MultiLineEdit :: GetLine (const QTextCursor &crQTextCursor ){
  QTextBlock              b,cb;
  int                     line = 1;
  cb = crQTextCursor.block();
  for(b = document()->begin();b!=document()->end();b = b.next()){
    if(b==cb)                                        return line
    line++;
  }
  return(line);
}