find() in QTextEdit

Alles rund um die Programmierung mit Qt
Antworten
Schwarzherz
Beiträge: 9
Registriert: 6. Mai 2006 14:04
Wohnort: Traunkirchen
Kontaktdaten:

find() in QTextEdit

Beitrag von Schwarzherz »

Versuch jetzt schon die ganze Zeit die find() Funktionen meines Editor zu implementieren.

Wenn "find" im Menü geklickt wurde, öffnet sich ein Dialog, in dem ich folgendes connect mache:

Code: Alles auswählen

connect(pushButtonFind, SIGNAL(clicked()),
	    parent, SLOT(findText(lineEditSearchFor->text(), 
				  checkBoxFindCaseSens->checkState(), 
				  checkBoxFindWholeWords->checkState(), 
				  checkBoxFindBackwards->checkState())));
Im parent (also dem mainwindow) wird nun der SLOT findText ausgeführt, der wie folgt aussieht:

Code: Alles auswählen

void MainWindow::findText(const QString &text, int caseSensitivity, int wholeWords, int backwards)
{    
    activeMdiChild()->document()->find(text, activeMdiChild()->textCursor());				     
				     caseSensitivity == 2 ? QTextDocument::FindCaseSensitively : 
			                                (QFlags<QTextDocument::FindFlag>) 0 |
				     wholeWords == 2 ? QTextDocument::FindWholeWords : 
					           (QFlags<QTextDocument::FindFlag>) 0 |
				     backwards == 2 ? QTextDocument::FindBackward : 
					          (QFlags<QTextDocument::FindFlag>) 0);
}
Wenn ich nun aber die Anwendung starte und etwas finden möchte, passiert genau gar nichts...

Hat jemand ne Ahnung an was das liegen könnte?
ArneStocker
Beiträge: 300
Registriert: 3. November 2004 16:15
Wohnort: Berlin

Beitrag von ArneStocker »

hi

Die Übergabe von Parametern im Aufruf SLOTS('...') ist unzulässig !

http://qtforum.de/forum/viewtopic.php?t=1836

Gruss Arne
Schwarzherz
Beiträge: 9
Registriert: 6. Mai 2006 14:04
Wohnort: Traunkirchen
Kontaktdaten:

Beitrag von Schwarzherz »

Danke, habs soweit hinbekommen, dass ich die Werte in die andere Klasse transportiere.

Nur funktioniert der find() Aufruf in dem QTextEdit nicht.

Hier der Code:

Code: Alles auswählen

activeMdiChild()->document()->find(findDialog->getSearchFor(), activeMdiChild()->textCursor(), findDialog->getFindCaseSens() == 2 ?
				       QTextDocument::FindCaseSensitively :
				       (QFlags<QTextDocument::FindFlag>) 0 |
				       findDialog->getFindWholeWords() == 2 ? 
				       QTextDocument::FindWholeWords : 
				       (QFlags<QTextDocument::FindFlag>) 0 |
				       findDialog->getFindBackwards() == 2 ?
				       QTextDocument::FindBackward : 
				       (QFlags<QTextDocument::FindFlag>) 0);
Wobei activeMdiChild() ein QTextEdit liefert, getSearchFor() einen QString und die anderen get- Funktionen jeweils einen Integerwert (0, 1 oder 2), ob die Häkchen der jeweiligen QCheckBox gesetzt sind.
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Schwarzherz hat geschrieben:

Code: Alles auswählen

activeMdiChild()->document()->find(findDialog->getSearchFor(), activeMdiChild()->textCursor(), findDialog->getFindCaseSens() == 2 ?
				       QTextDocument::FindCaseSensitively :
				       (QFlags<QTextDocument::FindFlag>) 0 |
				       findDialog->getFindWholeWords() == 2 ? 
				       QTextDocument::FindWholeWords : 
				       (QFlags<QTextDocument::FindFlag>) 0 |
				       findDialog->getFindBackwards() == 2 ?
				       QTextDocument::FindBackward : 
				       (QFlags<QTextDocument::FindFlag>) 0);
Toll. Machst Du an nem Wettbewerb mit, großes Programm mit wenigen Zeilen? Zerleg die Bestimmung der FindFlags mal und schau ob was Valides dabei heraus kommt.
Schwarzherz
Beiträge: 9
Registriert: 6. Mai 2006 14:04
Wohnort: Traunkirchen
Kontaktdaten:

Beitrag von Schwarzherz »

An dem liegts jetzt mal nicht. Ich hab auch schon komplett ohne Find-Flags probiert, also nur mit Text, funktioniert auch nicht.
Antworten