Seite 1 von 1

Problem mit einfachem Texteditor und find()

Verfasst: 12. April 2007 00:31
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

Verfasst: 12. April 2007 07:29
von macman
Und was ist daran jetzt so schwer?

Verfasst: 12. April 2007 13:48
von Stormcrow
Ich hab erst mit QT angefangen, das hilft mir jetzt auch net wirklich weiter.

Thnx anyways

Verfasst: 12. April 2007 14:17
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.

Verfasst: 12. April 2007 14:21
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.

Verfasst: 12. April 2007 15:16
von Christian81
Ich muss macman recht geben - "Ich bekomms einfach nicht hin" ist eine sehr unzureichende Fehlerbeschreibung...

Verfasst: 3. Mai 2007 21:02
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);
}

Verfasst: 19. Juni 2007 12:19
von Stormcrow
Hat auch funktioniert danke.

@rest

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