QTextEdit, QStringList - zeilenweiser Zugriff
QTextEdit, QStringList - zeilenweiser Zugriff
Hallo,
ich möchte den Inhalt einer Datei nur teilweise in ein TextEdit einfügen.
Ich dachte eigentlich, dass QStringList mein Freund wäre, aber irgendwie komme ich nicht damit zurecht. Idee war Die Liste zeilenweise nach meinen Informationen zu durchsuchen und diese dann häppchenweise an das TextEdit zu übergeben.
In der Doku habe ich aber keinen Hinweis gefunden wie ich das QStringList zeilenweise lesen kann. Auch würde ich dann ganz gern in der Zeile das Vorkommen einer Zeichenkette ermitteln wollen.
Hatte dann schon dran gedacht alles im TextEdit zu machen, aber auch hier habe ich keine Info gefunden wie ich darin zeilenweise oder stringweise, wie auch immer, lesen kann.
Gruß
NAR12
ich möchte den Inhalt einer Datei nur teilweise in ein TextEdit einfügen.
Ich dachte eigentlich, dass QStringList mein Freund wäre, aber irgendwie komme ich nicht damit zurecht. Idee war Die Liste zeilenweise nach meinen Informationen zu durchsuchen und diese dann häppchenweise an das TextEdit zu übergeben.
In der Doku habe ich aber keinen Hinweis gefunden wie ich das QStringList zeilenweise lesen kann. Auch würde ich dann ganz gern in der Zeile das Vorkommen einer Zeichenkette ermitteln wollen.
Hatte dann schon dran gedacht alles im TextEdit zu machen, aber auch hier habe ich keine Info gefunden wie ich darin zeilenweise oder stringweise, wie auch immer, lesen kann.
Gruß
NAR12
Die Doku ist dein Freund.
http://doc.trolltech.com/4.2/qstringlist.html#filter
http://doc.trolltech.com/4.2/qstringlist.html#filter
Hm, ja das könnte für einen Teil der Anwendung gehen. Danke.
Aber das ist nicht so ganz das was ich für den Rest brauche.
Ich muss in der Stringlist auch Zeichenketten finden und ihre Position ermittlen, respektive die Zeilennummer in welcher sie sich befinden, denn dies gibt mir an wo logische Blöcke in der Datei beginnen und aufhören. Ansatz ist, wenn ich die Position dieser "Markierungsstrings", von denen es auch mehrere gleiche geben kann, kenne kann ich so die Datei entsprechend splitten.
Bsp. wäre die Marke "$MET" welche 3 mal in unbekannten Abständen vorkommt. Das letzte Vorkommen von "$MET" zeigt mir an, dass der Block zu Ende ist
Gruß
NAT12
Aber das ist nicht so ganz das was ich für den Rest brauche.
Ich muss in der Stringlist auch Zeichenketten finden und ihre Position ermittlen, respektive die Zeilennummer in welcher sie sich befinden, denn dies gibt mir an wo logische Blöcke in der Datei beginnen und aufhören. Ansatz ist, wenn ich die Position dieser "Markierungsstrings", von denen es auch mehrere gleiche geben kann, kenne kann ich so die Datei entsprechend splitten.
Bsp. wäre die Marke "$MET" welche 3 mal in unbekannten Abständen vorkommt. Das letzte Vorkommen von "$MET" zeigt mir an, dass der Block zu Ende ist
Gruß
NAT12
Die Doku ist immer noch dein Freund.NAR12 hat geschrieben:Aber das ist nicht so ganz das was ich für den Rest brauche.
http://doc.trolltech.com/4.2/qstringlist.html#indexOf
http://doc.trolltech.com/4.2/qstringlis ... astIndexOf
Mehr Hilfe gibt es nicht. Das was Du willst ist so trivial, das sollte jeder hinbekommen.
Danke.
Werd's mal damit versuchen.
Allerdings ist mir noch nicht ganz klar, wie ich die Strings aus der Liste in das textEdit bekomme. Den Operator << akzeptiert das QTextEdit nicht.
Verzeih mir, aber ich bin zum einen nicht sehr fit in C++ und zum anderen finde ich die Implementierung der StringListe auch etwas undurchsichtig in dem Punkt.
Gruß
NAR12
Werd's mal damit versuchen.
Allerdings ist mir noch nicht ganz klar, wie ich die Strings aus der Liste in das textEdit bekomme. Den Operator << akzeptiert das QTextEdit nicht.
Verzeih mir, aber ich bin zum einen nicht sehr fit in C++ und zum anderen finde ich die Implementierung der StringListe auch etwas undurchsichtig in dem Punkt.
Gruß
NAR12
Aber die Doku zu QTextEdit hast du schon mal überflogen, oder?
Code: Alles auswählen
void QTextEdit::append ( const QString & text )Die liefert nicht einen String zurück, sondern die ganze Liste als einen String. Wenn Du in der Doku zu QStringList, ganz oben, auf 'List of all members' klickst, dann findest Du eine ganze Menge was dir einen einzelnen String zurück gibt.NAR12 hat geschrieben:Aber die einzige Funktion die ich gefunden habe, welche einen String aus QStringList liefert war diese:
QString QStringList::join (const QString &separator) const
Für dich wäre wohl ein myStringList.at(int p) am zweckmässigsten.
Zeilenzugriff QTextEdit
Hallo,
ich nochmal.
Ich habe nun einige Erfahrung mit der QStringList gesammelt und komme gut zurecht.
Nun habe ich aber immer noch das Problem des Zeilenzugriffs im QTextEdit. Ich muss bestimmte Zeichenketten im TextEdit finden und möchte sie zum einen ersetzen, aber manchmal auch diese Zeile dann löschen. Mit find() hat es nicht geklappt Text zu finden, lag es vlt. daran, dass das QTextEdit zu der Zeit unsichtbar war? Zum Anderen habe ich keine Funktion zum löschen einer zeile gefunden.
Ich habe in der Doku was zu QTextDocument und QTextBlock gelesen, haber nichts brauchbares herausgefunden.
Gruß,
M
ich nochmal.
Ich habe nun einige Erfahrung mit der QStringList gesammelt und komme gut zurecht.
Nun habe ich aber immer noch das Problem des Zeilenzugriffs im QTextEdit. Ich muss bestimmte Zeichenketten im TextEdit finden und möchte sie zum einen ersetzen, aber manchmal auch diese Zeile dann löschen. Mit find() hat es nicht geklappt Text zu finden, lag es vlt. daran, dass das QTextEdit zu der Zeit unsichtbar war? Zum Anderen habe ich keine Funktion zum löschen einer zeile gefunden.
Ich habe in der Doku was zu QTextDocument und QTextBlock gelesen, haber nichts brauchbares herausgefunden.
Gruß,
M
QTextEdit --> QStringList ?
Hallo,
wie sieht es aus mit der Umkehrung des Prozesses?
Ich möchte den Inhalt eines QTextEdit in eine QStringList übergeben, wenn möglich in einem Rutsch und wenn nicht anders möglich auch gern zeilenweise.
Gruß
wie sieht es aus mit der Umkehrung des Prozesses?
Ich möchte den Inhalt eines QTextEdit in eine QStringList übergeben, wenn möglich in einem Rutsch und wenn nicht anders möglich auch gern zeilenweise.
Gruß
QStringList sl = textEdit->toPlainText().split("\n", QString::KeepEmptyParts);
QStringList sl = textEdit->toHtml().split("<br>", QString::KeepEmptyParts);
QStringList sl = textEdit->toHtml().split("<br>", QString::KeepEmptyParts);
Die deutsche Schriftsprache ist case-sensitive. Außerdem gibt es eine Interpunktionsnorm. Wenn manch einer seine Programme genauso schlampig schreibt, wie sein Posting hier, dann sollte er es lieber bleiben lassen.
Iher aus meinem kleinen text editor...
http://www.qt-apps.org/content/show.php ... tent=59422
funktion aus der letzten zeilen des http://juffed.googlecode.com/svn/trunk/qedit/qtedit.cpp
http://www.qt-apps.org/content/show.php ... tent=59422
funktion aus der letzten zeilen des http://juffed.googlecode.com/svn/trunk/qedit/qtedit.cpp
Code: Alles auswählen
QString TextEdit::GrepTextLines(int startline, int stopline )
{
QStringList cuttextlist;
cuttextlist.clear();
int xli = 1;
for ( QTextBlock block = document()->begin(); block.isValid(); block = block.next(), xli++) {
if (xli == startline || xli > startline) {
if (xli == stopline || xli < stopline) {
cuttextlist.append(GrepLineFromTxBloc(block));
////////qDebug() << "### cat line GrepTextLines " << xli;
}
}
}
return cuttextlist.join("\n");
}
QString TextEdit::GrepLineFromTxBloc( QTextBlock block )
{
QString linetext = "";
if ( m_tabSpaces ) /* ist der tabulator on um text einruecken */
{
int nbSpaces = tabStopWidth() / fontMetrics().width( " " );
for (int i = 0; i<nbSpaces; i++) {
linetext.append( " " );
}
linetext.append(block.text());
} else {
linetext.append(block.text());
}
return linetext;
}
.........................
speack português italiano deutsch english castellà qt
speack português italiano deutsch english castellà qt
Hallo,
danke für die Hilfe. Allerdings kriege ich es mit "QStringList sl = textEdit->toPlainText().split("\n", QString::KeepEmptyParts);" noch nicht hin.
Ich habe einen Funktionenaufruf, welcher wie folgt aussieht:
Das mal als Auszug.
Die beim kompilieren bekomme ich an der Stelle der Übergabe des TextEdits an die StringList einen Fehler. Ausserdem wollte ich alle 3 TextEdits an die StringListe übergeben, jedoch macht der Operator += ebenfalls Probleme.
Gruß
danke für die Hilfe. Allerdings kriege ich es mit "QStringList sl = textEdit->toPlainText().split("\n", QString::KeepEmptyParts);" noch nicht hin.
Ich habe einen Funktionenaufruf, welcher wie folgt aussieht:
Code: Alles auswählen
void TextCtrl::saveToFile()
{
bool error=false;
QStringList *StrgList = new QStringList();
QString fn = QFileDialog::getSaveFileName(this, tr("Save as..."),
QString(), tr("DAT files (*.dat);;All Files (*)"));
if (fn.isEmpty())
return;
error= SavePrepare(StrgList, 0, false);
QFile file(fn);
if (!file.open(QFile::WriteOnly))
return;
QTextStream ts(&file);
ts << tmpList;
}
bool PageCtrl::SavePrepare(QStringList StrgList, int Ext, bool batch)
{
bool error = false;
QTextEdit *TxtEditX = this->currentWidget()->findChild<QTextEdit*>("TxtEditX");
QTextEdit *TxtEditY = this->currentWidget()->findChild<QTextEdit*>("TxtEditY");
QTextEdit *TxtEditZ = this->currentWidget()->findChild<QTextEdit*>("TxtEditZ");
StrgList = (TxtEditX->toPlainText().split("\n", QString::KeepEmptyParts));
return(error);
}Die beim kompilieren bekomme ich an der Stelle der Übergabe des TextEdits an die StringList einen Fehler. Ausserdem wollte ich alle 3 TextEdits an die StringListe übergeben, jedoch macht der Operator += ebenfalls Probleme.
Gruß