Seite 1 von 1

QLineEdit

Verfasst: 18. August 2016 15:25
von XamZnew
Hallo zusammen,

benötige bitte dringend Hilfe!
Und zwar habe ich eine LineEdit und in diese kann ich entweder manuell( händisch ) oder über einen Browse-Button eine .properties Datei einfügen.
Nun will ich, das wenn man in diese LineEdit manuell eine Datei schreibt: zum Einen geprüft wird, ob diese Datei die richtige ist und zum Anderen, dass eine CB enabled wird, welche davor disabled war.
Hinzu noch eine Anforderung: wenn die LineEdit wieder leer ist, also immer wenn sie eben nicht befüllt ist, soll die CB disabled sein, sprich immer eine Art Aktualisierung vorhanden sein.

Ich danke vielmals im Voraus für Eure Mithilfe, Tipps oder dergleichen!

Grüße

Max

Re: QLineEdit

Verfasst: 19. August 2016 13:38
von hilefoks
Moin,

um die Checkbox zu steuern, könntest du folgendes machen:

Code: Alles auswählen

connect(myLineEdit, &QLineEdit::textChanged, [&]() {
  myCheckBox->setChecked( !myLineEdit.text().isEmpty() );
});
Das Signal textChanged bietet sich aber nicht an, um zu testen, ob die Datei exisitiert. Der Benutzer tippt ja gerade noch. Dann vielleicht sowas:

Code: Alles auswählen

connect(myLineEdit, &QLineEdit::editingFinished, [&]() {
  QString fileName = myLineEdit.text();
  myCheckBox->setChecked( !fileName.isEmpty() && QFile::exists(fileName) );
});
Alles ungetestet. Aber hoffe es hilft dir einen Schritt weiter.

- Hilefoks

Re: QLineEdit

Verfasst: 22. August 2016 09:01
von XamZnew
Servus,

sag ich schon einmal vielen Dank und probier das gleich mal aus...

gebe dann hier bescheid, ob es funktioniert hat ;)

Re: QLineEdit

Verfasst: 22. August 2016 09:17
von XamZnew

Code: Alles auswählen

co += connect( AudiIRCAnalyzerLineEdit, &QLineEdit::textChanged, [&]( ) {
	   	   	   	   AudiIRCAnalyzerCB->setEnabled( !AudiIRCAnalyzerLineEdit->text( ).isEmpty( ) ); } );
co += connect( AudiIRCAnalyzerLineEdit &QLineEdit::editingFinished, [&]( ) {
	     QString fileName = AudiIRCAnalyzerLineEdit->text( );
	     AudiIRCAnalyzerCB->setEnabled( !fileName.isEmpty( ) && QFile::exists( fileName ) ); } );
jetzt meckert er, da er nicht mehr connect erkennt...
der möchte da denke ich doch eine signal/slot verknüpfung.
was nun?
noch wer nen rat für mich?
reicht das aus, um zu erkennen, dass gerade geschrieben wird und somit die cb enabled wird und wenn nichts drinnen steht sie disabled wird?
kein slot oder so nötig?

EDIT: Code in code Tags gesetzt [hilefoks]

Re: QLineEdit

Verfasst: 22. August 2016 18:05
von Christian81
Und wie lautet die genaue Fehlermeldung? Und was soll das 'co +' davor?

Re: QLineEdit

Verfasst: 22. August 2016 21:25
von hilefoks
Das

Code: Alles auswählen

co += connect(...
ist sehr seltsam. Von welchem Typ ist co und was willst du damit?

Das was ich in meinen connect verwendet habe, ist die neue Signal-Slot Syntax, wie sie mit Qt5 eingeführt wurde. Darüber hinaus habe ich eine Lambda-Funktion statt eines Slots verwendet. Lambda-Funktionen wurden mit C++11 eingeführt.

Mit Qt ab 5.7 und normalen Compilern sollte es so gehen. Es hält dich aber natürlich auch nichts davon ab, aus meinen Lambda-Funktionen eine Slot zu machen.

Re: QLineEdit

Verfasst: 23. August 2016 15:39
von XamZnew
co ist vom typ int
somit kann man den output speichern
ich benutze qt 4.8.5
und zudem entsprechend das c++ und eclipse
ja er erkennt das so nicht weil es wie ihr auch erwähnt habt ein lamda ausdruck/funktion ist
ich arbeite jedoch ausschließlich mit signal/slot
von daher bitte ich nochmal um hilfe, dass ich in meiner anfangs gestellten frage weiterkomme
bin eben eher noch anfänger... :(

zudem habe ich eine datenbank und diese wird in einem .sql file abgespeichert, jetzt soll ich aber aus diesem file auch noch eine .txt datei machen
gibt es da eine einfache und schnelle lösung ohne das .sql file zu löschen sondern zusätzlich noch ein .txt zu erstellen?

vielen dank...

Re: QLineEdit

Verfasst: 24. August 2016 20:58
von Christian81
QObject::connect() bringt ein bool zurück, warum du dann einen integer damit addieren musst - keine Ahnung.
Und Du hast immer noch keine Fehlermeldung gepostet...

Re: QLineEdit

Verfasst: 30. August 2016 13:37
von XamZnew
noch eine andere frage und zwar:
ich möchte in eine lineedit etwas befüllen, wenn diese dann befüllt ist soll eine checkbox enabled werden, aber sobald ich die lineedit leere oder sie nun einmal leer ist, soll die checkbox disabled und unchecked werden...
jemand eine ahnung?

vielen dank und grüße

Re: QLineEdit

Verfasst: 30. August 2016 17:18
von Christian81
Schau Dir bitte einfach die Doku zu QLineEdit an - dort gibt es zum einen Funktionen zum Befüllen der QLineEdit und zum anderen Signale wenn sich etwas ändert.

Re: QLineEdit

Verfasst: 31. August 2016 07:49
von XamZnew
habe ich, werde aber nicht schlau daraus...

Re: QLineEdit

Verfasst: 31. August 2016 18:14
von Christian81