Qt Cursor Bewegen

Alles rund um die Programmierung mit Qt
Antworten
Buttzelman
Beiträge: 9
Registriert: 29. März 2017 19:40

Qt Cursor Bewegen

Beitrag 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
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: Qt Cursor Bewegen

Beitrag von Christian81 »

Wahr=ui->Anzeige->textCursor().movePosition(QTextCursor::Up);

Hier erzeugst Du ein neues Cursor-Objekt, Du wolltest aber wohl eigentlich auf Cursor arbeiten.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Buttzelman
Beiträge: 9
Registriert: 29. März 2017 19:40

Re: Qt Cursor Bewegen

Beitrag von Buttzelman »

So ich habe nun die Zeile

Code: Alles auswählen

Wahr=ui->Anzeige->textCursor().movePosition(QTextCursor::Up);
in

Code: Alles auswählen

        Wahr=Cursor.movePosition(QTextCursor::Down);
geändert da ich den Cursor ja bereits mit Zeile

Code: Alles auswählen

Cursor = ui->Anzeige->textCursor();
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.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: Qt Cursor Bewegen

Beitrag 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.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Buttzelman
Beiträge: 9
Registriert: 29. März 2017 19:40

Re: Qt Cursor Bewegen

Beitrag 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
Buttzelman
Beiträge: 9
Registriert: 29. März 2017 19:40

Re: Qt Cursor Bewegen

Beitrag 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.... :(
Buttzelman
Beiträge: 9
Registriert: 29. März 2017 19:40

Re: Qt Cursor Bewegen

Beitrag 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ß
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: Qt Cursor Bewegen

Beitrag 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.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: Qt Cursor Bewegen

Beitrag 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.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Buttzelman
Beiträge: 9
Registriert: 29. März 2017 19:40

Re: Qt Cursor Bewegen

Beitrag 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ß
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: Qt Cursor Bewegen

Beitrag von Christian81 »

Natürlich sehe ich den Cursor auch im Textedit ... wäre ja sonst sinnlos.
Dateianhänge
Screenshot_2.png
Screenshot_2.png (4.66 KiB) 10826 mal betrachtet
Screenshot_1.png
Screenshot_1.png (3.16 KiB) 10826 mal betrachtet
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Buttzelman
Beiträge: 9
Registriert: 29. März 2017 19:40

Re: Qt Cursor Bewegen

Beitrag von Buttzelman »

Nochmals Dank Christian,
ich muß mal schauen wann ich die Zeit find mich mal wieder dran zusetzen.
Buttzelman
Beiträge: 9
Registriert: 29. März 2017 19:40

Re: Qt Cursor Bewegen

Beitrag 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.
Antworten