Seite 1 von 1
Qt Cursor Bewegen
Verfasst: 29. März 2017 19:51
von Buttzelman
Hallo
Ich bin noch recht neu mit Qt und auch noch nicht ganz Sattelfest in den Möglichkeiten von C++
Trotzdem möchte ich gerne erste schritte In Qt wagen.
Und stoße auf noch unlösbare Hindernisse.
Folgendes ich würde gerne einen kleine Texteditor schreiben mittels QTextEdit und in diesen Text welcher in ein QLineEdit Element eingegeben wird formatiert ausgeben.
Sprich die erste Eingabe z.B. Zeile 1 Spalte 4
zweite Eingabe Zeile 3 Spalte 6 etc.
Nun bekomme ich es leider nicht hin den QTextCursor in meinen QTextEdit Fenster zu positionieren.
Habe schon in der Qt Doku gestöbert, und auch in diesen Forum die Suche bemüht.
Komme jedoch nicht voran.
mein Code versuch :
Code: Alles auswählen
Cursor = ui->Anzeige->textCursor();
ui->Anzeige->append(RohText);
Spalte = Cursor.blockNumber();
qDebug() <<Spalte<<"Spalte";
if (Spalte >=1)
{
Wahr=ui->Anzeige->textCursor().movePosition(QTextCursor::Up);
//Cursor.setPosition(2,QTextCursor::MoveAnchor);
ui->Anzeige->setTextCursor(Cursor);
Es wäre nett, wenn mir jemand ein entsprechendes Code Beispiel zeigen könnte.
Vielen Dank
Re: Qt Cursor Bewegen
Verfasst: 30. März 2017 06:39
von Christian81
Wahr=ui->Anzeige->textCursor().movePosition(QTextCursor::Up);
Hier erzeugst Du ein neues Cursor-Objekt, Du wolltest aber wohl eigentlich auf Cursor arbeiten.
Re: Qt Cursor Bewegen
Verfasst: 30. März 2017 14:58
von Buttzelman
So ich habe nun die Zeile
Code: Alles auswählen
Wahr=ui->Anzeige->textCursor().movePosition(QTextCursor::Up);
in
geändert da ich den Cursor ja bereits mit Zeile
geholt hatte.
Aber wie bekomme ich den Cursor nun Positioniert ?
Weder
Code: Alles auswählen
Wahr=ui->Anzeige->textCursor().movePosition(QTextCursor::Up);
ui->Anzeige->setTextCursor(Cursor);
noch
Code: Alles auswählen
Cursor.setPosition(2,QTextCursor::MoveAnchor);
ui->Anzeige->setTextCursor(Cursor);
zeigen Wirkung.
Re: Qt Cursor Bewegen
Verfasst: 30. März 2017 19:54
von Christian81
Cursor.setPosition(2,QTextCursor::MoveAnchor); setzt den Cursor an die 2. Position im Dokument. Wenn er schon dort ist wird sich nichts ändern.
Re: Qt Cursor Bewegen
Verfasst: 30. März 2017 20:11
von Buttzelman
Hallo Christian
ja aber auch wenn ich mehr als nur zwei Zeilen eingeben , der Cursor wandert weiter . Laut deiner Antwort sollte er ja eigentlich den Inhalt in Zeile Zwei überschreiben.
Tut es jedoch nicht.
Hast du evtl ein funktionierendes Code Beispiel ??
Danke
Re: Qt Cursor Bewegen
Verfasst: 30. März 2017 20:17
von Buttzelman
Hab mir jetzt mittels QDebug die Zeile und Spalte ausgeben lassen:
Code: Alles auswählen
Spalte = Cursor.blockNumber();
Zeile = Cursor.columnNumber();
qDebug() <<Spalte<<" Spalte "<<Zeile<<" Zeile";
Spalte springt auf 0 Zeile auf 2
auch durch wiederholter Eingabe lässt sich diese nicht mehr verändern.
Und Im QTextEdit schreibt der Cursor unbeeindruckt am Textende weiter....

Re: Qt Cursor Bewegen
Verfasst: 2. April 2017 10:42
von Buttzelman
Um nochmals zu Fragen kennt jemand hier eine fuktionierende Beispiellösunge für diese Aufgabe?
Ich suche niemanden der mir meine Aufgaben abnimmt, komme blos mit der Doku noch nicht so zurecht...
Gruß
Re: Qt Cursor Bewegen
Verfasst: 2. April 2017 11:08
von Christian81
Ein kleines, kompilierfähiges Beispiel würde da schon viel helfen da nicht jeder gewillt ist, sich erst selbst ein Beispiel zusammenzubauen nur um dein Problem nachzustellen.
Re: Qt Cursor Bewegen
Verfasst: 2. April 2017 11:45
von Christian81
Und bei mir funktioniert
Code: Alles auswählen
void TextEdit::about()
{
static int iPos = 1;
QTextCursor c = textEdit->textCursor();
c.setPosition(iPos);
textEdit->setTextCursor(c);
QMessageBox::about(this, tr("About"), tr("pos: %1").arg(iPos));
++iPos;
}
problemlos - der Cursor geht bei jedem Aufruf an die richtige Position.
Re: Qt Cursor Bewegen
Verfasst: 2. April 2017 19:42
von Buttzelman
Danke für deine Antwort Christian
kann es sein das wir etwas an einander vorbei reden?
Ich wollte den Cursor positionieren in der Form X=10,Y =6 so ungefähr.
Sehe jedoch nicht wie es mit deinem Code funktionieren soll.
In deinem Code Beispiel erhöhst du bei jeden Funktionsaufruf die Position des Cursors um 1.
Und lässt das nachher in einen QMessageBox ausgeben....
Dein Code ausprobiert:
Code: Alles auswählen
static int Punkt=1;
RohText =ui->lineEdit->text();
Bearbeiteter_Text = Cl_Textbearbeiten.Textholen(RohText);
ui->lineEdit->clear();
Cursor = ui->Anzeige->textCursor();
ui->Anzeige->append(RohText);
Cursor.setPosition(Punkt+2);
ui->Anzeige->setTextCursor(Cursor);
QMessageBox::about(this, tr("About"), tr("pos: %1").arg(Punkt));
++Punkt;
Ja klar ich bekomme den Zähler zurück das der Cursor eine Zeile weiter ist und?
Es wird im TextEdit
kein Cursor angezeigt sehe immer noch keine Möglichkeit den Cursor zu bewegen....
Gruß
Gruß
Re: Qt Cursor Bewegen
Verfasst: 2. April 2017 20:52
von Christian81
Natürlich sehe ich den Cursor auch im Textedit ... wäre ja sonst sinnlos.
Re: Qt Cursor Bewegen
Verfasst: 4. April 2017 19:18
von Buttzelman
Nochmals Dank Christian,
ich muß mal schauen wann ich die Zeit find mich mal wieder dran zusetzen.
Re: Qt Cursor Bewegen
Verfasst: 24. Januar 2018 20:53
von Buttzelman
<r>Leider bin ich bei meiner mir selbst gestellten Aufgabe noch nicht weitergekommen.<br/>
Hab es nochmal neu versucht.<br/>
Aufgabenstellung ist unverändert den Cursor im Textedit Feld zu bewegen um eine formatierte Ausgabe zu erzeugen.<br/>
Mein neuer Quellcode:
<CODE><s>
Code: Alles auswählen
</s><i>
</i>void MainWindow::on_Up_pressed()
{
ui->Textfenster->setTextColor(QColor(252,0,0));
}
void MainWindow::on_Right_pressed()
{
static int i=1;
ui->Textfenster->setTextColor(QColor(0,0,255));
Fehler=Cursor.movePosition(QTextCursor::Up,QTextCursor::MoveAnchor,3);
if (Fehler !=0)
{
ui->Textfenster->setTextColor(QColor(255,0,0));
}
ui->Textfenster->setTextCursor(Cursor);
}
......
void MainWindow::on_Eingabe_returnPressed()
{
Text=ui->Eingabe->text();
ui->Eingabe->clear();
ui->Textfenster->append(Text);
Cursor=ui->Textfenster->textCursor();
}
<e>
</e></CODE>
Ich habe auf meiner Oberfläche vier Schaltfächen erstellt Up-Down etc. um den Cursor zu bewegen.<br/>
Bekomme diesen jedoch weder mit Cursor.setPosition(2);<br/>
noch mit Cursor<br/>
Cursor.movePosition(QTextCursor::Up, QTextCursor::MoveAnchor,1);<br/>
bekomme ich den Cursor bewegt.</r>
Zur Kontrolle habe ich eine Bool Variable Namens Fehler angelegt, welche überprüfen soll ob die Funktion korrekt ausgeführt wird.
Leider alles ohne entsprechenden Ergebnisses.