QLineEdit

Verschiedenes zu Qt
Antworten
XamZnew
Beiträge: 34
Registriert: 18. August 2016 15:20

QLineEdit

Beitrag 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
hilefoks
Beiträge: 144
Registriert: 13. März 2008 16:09

Re: QLineEdit

Beitrag 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
XamZnew
Beiträge: 34
Registriert: 18. August 2016 15:20

Re: QLineEdit

Beitrag von XamZnew »

Servus,

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

gebe dann hier bescheid, ob es funktioniert hat ;)
XamZnew
Beiträge: 34
Registriert: 18. August 2016 15:20

Re: QLineEdit

Beitrag 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]
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: QLineEdit

Beitrag von Christian81 »

Und wie lautet die genaue Fehlermeldung? Und was soll das 'co +' davor?
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
hilefoks
Beiträge: 144
Registriert: 13. März 2008 16:09

Re: QLineEdit

Beitrag 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.
XamZnew
Beiträge: 34
Registriert: 18. August 2016 15:20

Re: QLineEdit

Beitrag 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...
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: QLineEdit

Beitrag 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...
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
XamZnew
Beiträge: 34
Registriert: 18. August 2016 15:20

Re: QLineEdit

Beitrag 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
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: QLineEdit

Beitrag 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.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
XamZnew
Beiträge: 34
Registriert: 18. August 2016 15:20

Re: QLineEdit

Beitrag von XamZnew »

habe ich, werde aber nicht schlau daraus...
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: QLineEdit

Beitrag von Christian81 »

MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Antworten