Seite 1 von 1

find() in QTextEdit

Verfasst: 13. Mai 2006 22:28
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?

Verfasst: 14. Mai 2006 09:07
von ArneStocker
hi

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

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

Gruss Arne

Verfasst: 16. Mai 2006 20:47
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.

Verfasst: 17. Mai 2006 07:30
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.

Verfasst: 17. Mai 2006 16:01
von Schwarzherz
An dem liegts jetzt mal nicht. Ich hab auch schon komplett ohne Find-Flags probiert, also nur mit Text, funktioniert auch nicht.