Seite 1 von 1

QlineEdit + textChanged ?

Verfasst: 23. August 2004 08:30
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.

Verfasst: 24. August 2004 01:01
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

Verfasst: 24. August 2004 07:14
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

Verfasst: 24. August 2004 16:18
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

Verfasst: 24. August 2004 20:37
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 =)

Verfasst: 25. August 2004 00:39
von miketech
Hi,

wird denn die moc_question.cpp erstellt?

Gruß

Mike

Verfasst: 25. August 2004 07:06
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

Verfasst: 25. August 2004 08:28
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

Verfasst: 27. August 2004 09:53
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...

Verfasst: 27. August 2004 09:58
von Goos
Du wirst doch nicht etwa versucht haben etwas direkt aus dem Assistant zu kopieren? :D

Goos