Problem mit einfachem Texteditor und find()

Alles rund um die Programmierung mit Qt
Antworten
Stormcrow
Beiträge: 4
Registriert: 12. April 2007 00:19

Problem mit einfachem Texteditor und find()

Beitrag von Stormcrow »

Hallo,

ich habe ein kleines Problem. Hab zwar schon die Suchfunktion, Google, diverse Bücher und den QT-Assistant befragt, wurde aber nicht schlau.

Ich habe nen einfachen Texteditor gecoded, nun möchte ich eine Suchfunktion implementieren um einzelne Strings hervorzuheben. Ihr wisst schon, wie bei Notepad unter Windows, oder Kate unter Linux.

Code: Alles auswählen

 search = new QAction("&Search", this);
   search->setShortcut(QString("Ctrl+F"));
   search->setStatusTip("Search");
   connect(search, SIGNAL(triggered()), this, SLOT(slotSeek()));
Nun hab ich dafür den passenden Slot mal angefangen

Code: Alles auswählen

void EditorSDIlg :: slotSeek()
{
    	QString s = QInputDialog::getText(this, tr("Seek a Word"),tr("Search for:"));

}
Nun möchte ich über die Eingabe des Input Dialogs das eingebene Wort suchen, so dass der Curser gleich darauf springt, oder noch besser, das zu suchende Wort gehighlighted wird.

Bin auf folgendes gestossen:

Code: Alles auswählen

bool QTextEdit::find ( const QString & exp, QTextDocument::FindFlags options = 0 )
Finds the next occurrence of the string, exp, using the given options. Returns true if exp was found and changes the cursor to select the match; otherwise returns false.
Aber es ich bekomms einfach nicht hin. Wär nett wenn man mir unter die Arme greifen könnte.

Grüssle
Michel
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Und was ist daran jetzt so schwer?
Stormcrow
Beiträge: 4
Registriert: 12. April 2007 00:19

Beitrag von Stormcrow »

Ich hab erst mit QT angefangen, das hilft mir jetzt auch net wirklich weiter.

Thnx anyways
Stormcrow
Beiträge: 4
Registriert: 12. April 2007 00:19

Beitrag von Stormcrow »

Code: Alles auswählen

void Beispiel6SDIDlg :: slotSeek()
{
	bool ok;
    	QString s = QInputDialog::getText(this, tr("Seek a Word"),tr("Search for:"), QLineEdit::Normal,"",&ok);
	text->QTextEdit::find(s);		
}
Danke trotzdem....mal gucken obs Foren gibt wo man qualifiziertere Antworten bekommt.
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Vielleicht hätte ich schreiben sollen 'Wo ist das Problem?'. Du willst eine Funktion schreiben und bekommst es nicht hin. Und wir sollen jetzt raten wo dein Problem ist? Ein bißchen mehr Input muss schon kommen. Wie sieht dein slotSeek aus? Da steht doch mehr als nur der InputDialog drin.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Ich muss macman recht geben - "Ich bekomms einfach nicht hin" ist eine sehr unzureichende Fehlerbeschreibung...
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
hawke
Beiträge: 1
Registriert: 3. Mai 2007 20:57

Beitrag von hawke »

was seit ihr denn für kunden, bin grad mit google hier gelandet und dann kommen da so zwei wichtigtuer und verschwenden meine zeit...

da gibt sich einer mühe eine ausführliche problembeschreibung abzuliefern und was kommt blablabla ... ihr habt wohl keine freunde die ihr belabern könnt wah.. denkt mal drüber nach wie vielen leuten ihr mit den sinnlosen antworten das leben leichter gemacht habt..

@stormcrow
versuch mal:

Code: Alles auswählen

void EditorDlg :: search()
{
 QString texttofind = QInputDialog::getText(this, "Searchbox","Search:",QLineEdit::Normal);

 textEdit->moveCursor(QTextCursor::Start);
 textEdit->find(texttofind);
}
Stormcrow
Beiträge: 4
Registriert: 12. April 2007 00:19

Beitrag von Stormcrow »

Hat auch funktioniert danke.

@rest

Ich dachte es sei ersichtlich dass mir die Verwendung der Methode find() unklar ist.
Antworten