QlineEdit + textChanged ?

Alles rund um die Programmierung mit Qt
Antworten
bUscher
Beiträge: 5
Registriert: 11. August 2004 07:45
Wohnort: Sassnitz
Kontaktdaten:

QlineEdit + textChanged ?

Beitrag von bUscher »

hi,
ich habe versucht das Beispiel von QLineEdit und dem textChange evtn nachzubauen und erhalte trotzdem folgendes:

QObject::connect: No such signal QLineEdit::textChanged(const QString&)
QObject::connect: (sender name: 'unnamed')
QObject::connect: (receiver name: 'unnamed')

Code: Alles auswählen

/*************** question.cpp ************/

#include "question.h"

Iclass::Iclass(QWidget *, const char *)    
{
  myNextBtn = new QPushButton("Weiter >>",this);  
  myNextBtn->setGeometry(640,700,120,50);
  myNextBtn->setFlat(true);
  myNextBtn->setEnabled(false);

  myNameEdt = new QLineEdit("",this);       
  myNameEdt->setGeometry(120,30,220,30);  
  QObject::connect(myNameEdt,SIGNAL(textChanged(const QString&)),this,SLOT(checkFill(const QString&)));
}

void Iclass::checkFill(const QString&)    
{
  if ( !myNameEdt->text().isEmpty() )   
  {
    myNextBtn->setEnabled(true);
  }
};


/*************** question.h ************/

#ifndef ICLASS_H
#define ICLASS_H

#include <qpushbutton.h>
#include <qlineedit.h>

class Iclass : public QWidget  //create the class Iclass , copy the functions of QWidget
{
  Q_OBJECT
public:
  Iclass (QWidget *parent=0, const char *name=0);
  ~Iclass(); 
private:
  QPushButton *myNextBtn; 
  QLineEdit *myNameEdt;
public slots:                               
  void checkFill(const QString&);
};

#endif 
das programm soll eigentlich nur folgendes tun wenn das textfeld nicht leer ist soll der weiter button aktiv werden.
Join #QT.de @ Qnet
miketech
Beiträge: 125
Registriert: 3. August 2004 11:19

Beitrag von miketech »

Hi,

ich habs bei mir mal mit ziemlich genau dem obigen Quellcode versucht. Jedoch konnte ich es damit nicht einmal kompilieren.

Die folgenden Zeilen habe ich beim Abschreiben bereits weggelassen:

#ifndef ICLASS_H
#define ICLASS_H
#endif



Um das Programm zu kompilieren musste ich dann noch folgende Änderung vornehmen:

~Iclass();

Da kein Destruktor implementiert ist, habe ich diese Zeile aus der question.h entfernt. Dann konnte ich das Programm problemlos kompilieren und auch checkFill wird, wie gewünscht ausgeführt.

Vielleicht bekommst Du es ja zum Laufen, wenn Du ebenfalls diese 4 Zeilen weglässt. Vorausgesetzt die Anweisungen haben keinen bestimmten Zweck und Du hast nicht doch noch irgendwo den Destruktor implementiert.

Gruß

Mike
bUscher
Beiträge: 5
Registriert: 11. August 2004 07:45
Wohnort: Sassnitz
Kontaktdaten:

Beitrag von bUscher »

Auch nachdem ich die zeilen

#ifndef ICLASS_H
#define ICLASS_H
#endif

und den Destruktor weggelassen habe, kam immernoch genau die selbe Meldung.

den Destruktor hatte ich ja eigentlich nur vergessen zu kopieren hier ins forum.
Aber ob mit oder ohne es funktioniert nicht.

Gruß

bUscher
Join #QT.de @ Qnet
miketech
Beiträge: 125
Registriert: 3. August 2004 11:19

Beitrag von miketech »

Hast Du mal versucht ein kleines anderes Programm zu schreiben, welches mit einem Signal von QLineEdit arbeitet? Vielleicht ist bei Dir irgendwas mit dem qmake oder dem Linker nicht in Ordnung? Arbeitest Du unter Linux mit qmake?

Gruß

Mike
bUscher
Beiträge: 5
Registriert: 11. August 2004 07:45
Wohnort: Sassnitz
Kontaktdaten:

Beitrag von bUscher »

habs gerade ebnd versucht , so ein mini programm zuschreiben und selbst das geht nicht.

Ich arbeite mit kdevelop 2.1 und qt 3.2.1 unter Suse 9.0

ob ich es mit console oder kdevelop kompiliere der fehler kommt auch so =/

nun kommt die frage an was könnt das liegen oder wie muss ich was einstellen?

bin für jede hilfe dankbar =)
Join #QT.de @ Qnet
miketech
Beiträge: 125
Registriert: 3. August 2004 11:19

Beitrag von miketech »

Hi,

wird denn die moc_question.cpp erstellt?

Gruß

Mike
bUscher
Beiträge: 5
Registriert: 11. August 2004 07:45
Wohnort: Sassnitz
Kontaktdaten:

Beitrag von bUscher »

es werden folgende erstellt :

main.cpp
main.o
Makefile
Makefile.am
Makefile.in
question
question.cpp
question.h
question.moc.cpp
question.moc.o
question.o

wobei ich zugeben muss das ich die funktion der einzelnen dateien nicht verstehe also *.moc
und *.o
Join #QT.de @ Qnet
jaegermeister
Beiträge: 70
Registriert: 11. August 2004 07:44
Wohnort: Bergen auf Rügen
Kontaktdaten:

Beitrag von jaegermeister »

Die .o sind Objekt Dateien, und die .moc sind aus deinen .h Dateien entstanden.
Die .moc werden vom Meta Object Compiler erstellt. Diese werden in den .cpp verwendet.
Genaueres weiß ich leider auch nicht. :(

->http://doc.trolltech.com/3.3/metaobjects.html<-zum nachlesen
hab gerade keine Zeit ums zu erklären.

Mfg jaegermeister
Wie könnten ja wenn wir wollten, aber wie wollen ja nicht.
bUscher
Beiträge: 5
Registriert: 11. August 2004 07:45
Wohnort: Sassnitz
Kontaktdaten:

Beitrag von bUscher »

problem gelöst

es lag einfach nur ein steuerzeichen die nicht in Kdevelop sichtbar waren..

Code: Alles auswählen

connect(myNameEdt, SIGNAL(textChanged(const QString&)), this, SLOT(checkChanged(const QString&)));
funktioniert nun ohne probleme...
Join #QT.de @ Qnet
Goos
Beiträge: 360
Registriert: 17. August 2004 10:10
Wohnort: Black Forest

Beitrag von Goos »

Du wirst doch nicht etwa versucht haben etwas direkt aus dem Assistant zu kopieren? :D

Goos
Antworten