QLineEdit auf Signale reagieren

Alles rund um die Programmierung mit Qt
Antworten
hoody
Beiträge: 2
Registriert: 4. Oktober 2006 12:18
Kontaktdaten:

QLineEdit auf Signale reagieren

Beitrag von hoody »

Hallo Hallo,

bin ein ziemlich neuer QT Benutzer, brauch es allerdings für eine Projektarbeit. Vielleicht könnt ihr mir ja weiter helfen...

Also nun erstmal zu meinem Problem, ich will bestimmte Strings in QLineEdit Felder einblenden. Wenn ich das QLineEdit Objekt anlege, klappt auch alles wunderbar mit setText(), wenn ich dann allerdings einen neuen Text setzen möchte passiert leider garnix mehr. Habe den Teil mal aus meinem Projekt genommen und in ein extra "programm" gepackt... es soll hier lediglich auf das SIGNAL clicked des Buttons ein Text "Test" in QLineEdit eingeblendet werden....

Danke schonmal für Eure Hilfe!

PS.: hab auch schonmal im Forum geschaut, allerdings keine passenden Threats zu meinem Problem gefunden...

Code: Alles auswählen

MyWidget.h
===============================
      1 #ifndef MYWIDGET_H_
      2 #define MYWIDGET_H_
      3 
      4 #include <QPushButton>
      5 #include <QWidget>
      6 #include <QLineEdit>
      7 
      8 class MyWidget : public QWidget
      9 {       public:
     10         MyWidget(QWidget *parent = 0);
     11         
     12         public slots:
     13         void SETtoEMPTY();
     14     
     15         private:
     16         QPushButton *B;
     17         QLineEdit *L;
     18 };
     19 
     20 #endif /*MYWIDGET_H_*/
===============================

Code: Alles auswählen

MyWidget.cpp
===============================
      1 
      2 #include "MyWidget.h"
      3 
      4 using namespace std;
      5 
      6 MyWidget::MyWidget(QWidget *parent) : QWidget(parent)
      7 {       this->setFixedSize(800,600); 
      8        
      9         B = new QPushButton(tr("Button"),this);
     10         B->setGeometry(10,10,150,30);
     11         B->setFont(QFont("Arial", 10, QFont::Bold));
     12 
     13         L = new QLineEdit(this);
     14		L->setGeometry(150,10,150,30);
     15         L->setReadOnly(0);
     16 
     17         connect(B, SIGNAL(clicked()) , this , SLOT(SETtoEMPTY()) );
     18 }
     19 
     20 void MyWidget::SETtoEMPTY()
     21 {       L->setText(tr("TEST"));
     22 }
     23 
================================

Code: Alles auswählen

main.cpp
================================
      1 #include <QApplication>
      2 
      3 #include "MyWidget.h"
      4 
      5 using namespace std;
      6 
      7 int main(int argc, char* argv[])
      8 {       QApplication app(argc, argv);
      9         MyWidget widget;
     10         widget.show();
     11         return app.exec();
     12 
     13 }
     14 
================================
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Irgendwie fehlt da ein Q_OBJECT.
caligano
Beiträge: 126
Registriert: 19. August 2006 15:33

Beitrag von caligano »

macman hat geschrieben:Irgendwie fehlt da ein Q_OBJECT.
in der Tat:

MyWidget.h

Code: Alles auswählen

#ifndef MYWIDGET_H_                    
#define MYWIDGET_H_                    
                                       
#include <QPushButton>                 
#include <QWidget>                     
#include <QLineEdit>                   
                                       
class MyWidget : public QWidget        
{       
   
   Q_OBJECT
   
public:                        
   MyWidget(QWidget *parent = 0); 
                                       
public slots:                  
   void SETtoEMPTY();             
                                       
private:                       
   QPushButton *B;                
   QLineEdit *L;                  
};                                     
                                       
#endif /*MYWIDGET_H_*/                 
Jetzt noch einmal qmake laufen lassen und dann funktioniert das auch!
hoody
Beiträge: 2
Registriert: 4. Oktober 2006 12:18
Kontaktdaten:

Beitrag von hoody »

Sehr gut, ich danke Euch!!! Jetz läuft das ganze Ding wirklich ... :)

Gruß HoodY
Antworten