Seite 1 von 1

QTextCursor? QT:3.3.6

Verfasst: 2. März 2011 16:06
von whit3
Was ist dieses QTextCursor...
Es geht darum:

Ich brauche den QPoint oder Vergleichbares von dem Textcursor (das blinkende Ding :lol:) in einem QTextEdit.

Jedoch finde ich keinerlei Information zu QTextCursor, obwohl mein Objekt (QTextEdit) die Funktion

Code: Alles auswählen

QTextCursor * textCursor () const
existiert und auch in der Hilfe beschrieben ist :?: :?: :?:

Der Sinn des Ganzen ist es, eine QListBox zu öffnen an der Stelle des Cursors.

Momentan kann ich leider nur die PixelPosition eines Paragraphen ermitteln, was aber nicht reicht... da die Box immer am Anfang (x) aufgeht.

Code: Alles auswählen

//CodeEditor ist ein QTextEdit
//completion ist die QListBox

void CodeEditor::fillList()
{	
	int a,b;
	getCursorPosition(&a,&b);
	QTextCursor ahhhhhh = this->textCursor();
	QRect paraGeo = paragraphRect(a);
	int x1,y1,x2,y2;
	paraGeo.coords(&x1,&y1,&x2,&y2);
	completion->setGeometry(x1,(y2-y1)+2,100,100);
	completion->show();	
}

Verfasst: 2. März 2011 19:55
von upsala
Warning: QTextCursor is not in the public API, but in special circumstances you might wish to use it.
Tja, da würde ich mal die Sourcen von Qt bemühen.

Verfasst: 3. März 2011 08:15
von whit3

Code: Alles auswählen

int a,b, x1,y1,x2,y2;

getCursorPosition(&a,&b);
QRect paraGeo = paragraphRect(a);

paraGeo.coords(&x1,&y1,&x2,&y2);
completion->setGeometry(x,(y2+4),100,100);	

completion->show();
So funktioniert das Anzeigen auf der Y-Achse ja tadelos - aber wie kann ich den Index des Zeichens im Paragraph auf Pixel umrechnen. So dass, die QListBox hinter dem letzten eingegebenen Buchstaben erscheint.
Ich denke ich brauch den QTextCursor garnicht...
Upsala hast du vllt eine Idee?

Verfasst: 3. März 2011 12:07
von upsala
Nein.

Verfasst: 6. März 2011 19:01
von Troll.Soft
Es gibt die umgekehrte Funktion:

Code: Alles auswählen

QTextCursor QTextEdit::cursorForPosition ( const QPoint & pos ) const
und es fand sich diese Funktion:

Code: Alles auswählen

QRect QTextEdit::cursorRect () const
returns a rectangle (in viewport coordinates) that includes the cursor of the text edit.
habe beide Funktionen noch nie benutzt, würde sie aber in Deinem Fall mal testen :)
tschüß
Troll.Soft