Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » KDevelop / Qt / wxWidget » Unklare Compilermeldung

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
14.10.2003, 11:08 Uhr
~toom
Gast


Hi !

Ich hab ein kleines Qt-Prog geschrieben. Der Compiler gibt mir folgende Fehlermeldung:


Code:
tom@debian:~/eigene dateien/Programmieren/qt-kde Programmierung/tut8$ make
g++ -c -pipe -Wall -W -O2  -DQT_NO_DEBUG -DQT_SHARED -I/usr/share/qt3/mkspecs/default -I. -I. -I/usr/include/qt3 -o MyCannonField.o MyCannonField.cpp
MyCannonField.cpp: In member function `virtual void
   MyCannonField::paintEvent(QPaintEvent*)':
MyCannonField.cpp:22: variable `QPainter p' has initializer but incomplete type
make: *** [MyCannonField.o] Error 1



Was will mir der Compiler eigentlich sagen. Ich versteh leider nicht was er meint.

Hier der Qellcode:

Code:
#include <qwidget.h>
#include <qstring.h>

#include "mycannonfield.h"

#define null NULL

MyCannonField::MyCannonField(int angle , QWidget* parent , const char* name ) : QWidget( parent, name) {
  this->angle = angle;
}

void MyCannonField::setAngle(int angle) {
  this->angle = angle;
  repaint();
  emit angleChanged(angle);
}


void MyCannonField::paintEvent( QPaintEvent * )
{
    QString s = "Angle = " + QString::number( angle );
    QPainter p( this );
    p.drawText( 200, 200, s );
}


Über Hilfe würde ich mich sehr freuen.

mfg
tom
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
14.10.2003, 12:30 Uhr
0xdeadbeef
Gott
(Operator)


QPainter ist nicht definiert, deswegen incomplete type. Ich würde vermuten, dass QPainter in der Datei qpainter.h steht, also sollte die Zeile

C++:
#include <qpainter.h>


am Anfang der Datei dein Problem lösen.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
14.10.2003, 13:39 Uhr
~toom
Gast


Hi !

Das war es tatsächlich. Jetzt habe ich allerdings einen anderen Fehler bei dem ich einfach nicht weiterkomme. Der Compiler meldet mir nun folgendes.

Code:
tom@debian:~/eigene dateien/Programmieren/qt-kde Programmierung/tut8$ make
g++ -c -pipe -Wall -W -O2  -DQT_NO_DEBUG -DQT_SHARED -I/usr/share/qt3/mkspecs/default -I. -I. -I/usr/include/qt3 -o moc_mycannonfield.o moc_mycannonfield.cpp
In file included from /usr/include/qt3/qasciidict.h:42,
                 from /usr/include/qt3/qapplication.h:43,
                 from moc_mycannonfield.cpp:13:
/usr/include/qt3/qgdict.h: In member function `QString
   QGDictIterator::getKeyString() const':
/usr/include/qt3/qgdict.h:203: syntax error before `__null'
/usr/include/qt3/qgdict.h:208: conversion from `QBaseBucket*' to non-scalar
   type `QString' requested
In file included from /usr/include/qt3/qapplication.h:45,
                 from moc_mycannonfield.cpp:13:
/usr/include/qt3/qtranslator.h: At global scope:
/usr/include/qt3/qtranslator.h:58: syntax error before `;' token
/usr/include/qt3/qtranslator.h: In member function `uint
   QTranslatorMessage::hash() const':
/usr/include/qt3/qtranslator.h:64: `h' undeclared (first use this function)
/usr/include/qt3/qtranslator.h:64: (Each undeclared identifier is reported only
   once for each function it appears in.)
/usr/include/qt3/qtranslator.h: At global scope:
/usr/include/qt3/qtranslator.h:118: syntax error before `;' token
/usr/include/qt3/qtranslator.h:119: syntax error before `;' token
/usr/include/qt3/qtranslator.h:120: syntax error before `;' token
In file included from moc_mycannonfield.cpp:13:
/usr/include/qt3/qapplication.h: In member function `QString
   QApplication::sessionKey() const':
/usr/include/qt3/qapplication.h:481: syntax error before `__null'
/usr/include/qt3/qapplication.h:490: conversion from `QString*' to non-scalar
   type `QString' requested
make: *** [moc_mycannonfield.o] Error 1


Da das Problem nicht an meinem Quellcode liegt, verstehe ich diese Ausgabe leider überhaupt nicht mehr. Das sieht mir eher nach einem Problem aus, das an Qt liegt. Was das jedoch genau ist weiss ich leider nicht ??

Ich würde mich freuen wenn mir hiermit einer weiterhelfen könnte, zumal das nun schon das zweite Qt Projekt ist bei dem dieser Fehler kommt.

mfg
tom
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
14.10.2003, 14:29 Uhr
typecast
aka loddab
(Operator)


Wenn du solche Fehlermeldungen bekommst, dann weißt das häufig darauf hin, dass du einen Deklarations/Definitionsfehler gemacht hast. Poste mal den Anfang deiner Quellcodedatei.
--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
14.10.2003, 15:51 Uhr
~toom
Gast


Ich poste zur Sicherheit mal den gesamten Quellcode:

Hier ist mein Headerdatei für die Klasse MyCannonField:


C++:
#include <qwidget.h>
#include <qpainter.h>
#include <qevent.h>

#define null NULL

class MyCannonField : public QWidget {

  Q_OBJECT

    int angle;

    public:
  MyCannonField( int angle = null , QWidget* parent = null, const char* name = null);

  int getAngle() {
    return this->angle;
  }

  public slots:
  void setAngle(int);

signals:
  void angleChanged(int);

protected:
  void paintEvent(QPaintEvent* );
};


Hier kommt MyCannonField.cpp:

C++:
#include <qwidget.h>
#include <qstring.h>
#include <qpainter.h>
#include <qevent.h>

#include "mycannonfield.h"

#define null NULL

MyCannonField::MyCannonField(int angle , QWidget* parent , const char* name ) : QWidget( parent, name) {
  this->angle = angle;
}

void MyCannonField::setAngle(int angle) {
  this->angle = angle;
  repaint();
  emit angleChanged(angle);
}


void MyCannonField::paintEvent( QPaintEvent * )
{
    QString s = "Angle = " + QString::number( angle );
    QPainter p( this );
    p.drawText( 200, 200, s );
}




Und zum Schluss main.cpp, wobei ich nicht glaube, dass der Fehler da liegt:

C++:
#include <qapplication.h>
#include <qpushbutton.h>
#include <qwidget.h>
#include <qlcdnumber.h>
#include <qlayout.h>
#include <qslider.h>

#include "mycannonfield.h"

#define null NULL

class MyWidget: public QWidget {
public:
  MyWidget( QWidget* parent , const char* name );
};


MyWidget::MyWidget( QWidget* parent = null , const char* name = null) : QWidget(parent, name) {

    /*...GridLayout for formatation...*/
    QGridLayout* qGrid = new QGridLayout(this, 2, 2);


    /*...defining some objects, we want to integrate...*/
    QPushButton* qButt = new QPushButton("Quit this shit", this, null);

    QSlider* qSlider = new QSlider(this);
    qSlider->setRange(0,99);

    QLCDNumber *lcd = new QLCDNumber(this);

    MyCannonField* myCannon = new MyCannonField(25, this, null);


    /*connect signals and slots of some objects above...*/
    QObject::connect(qButt, SIGNAL(clicked()),
                     qApp, SLOT(quit()));

    QObject::connect( qSlider, SIGNAL( valueChanged(int) ),
                      lcd, SLOT(display(int)));

    QObject::connect( qSlider, SIGNAL( valueChanged(int)),
                      myCannon, SLOT( setAngle(int)));

    /*...Now, add all object into the qGrid...*/
    qGrid->addWidget(qButt,1,2);
    qGrid->addWidget(lcd,1,1);
    qGrid->addWidget(qSlider,2,1);
    qGrid->addWidget(myCannon,2,2);
} //end class MyWidget


int main(int argc, char** argv) {
    QApplication* qApp = new QApplication(argc, argv);
    MyWidget* myWidget = new MyWidget();
    qApp->setMainWidget(myWidget);
    myWidget->show();

    return qApp->exec();
}



Ich seh jetzt leider nicht was fehlt (liegt wohl daran, dass ich keine Erfahrung hab).

mfg
tom


Bearbeitung von loddab:
code-Tags durch cpp-Tags ersetzt

Dieser Post wurde am 15.10.2003 um 09:28 Uhr von Loddab editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
15.10.2003, 11:10 Uhr
~toom
Gast


Hey !

Ich hab's jetzt. Ich habe vergessen die oben genannten Dateien zu includen also :

C++:
#include <qgdict.h>
#include <qtranslator.h>
#include <qapplication.h>



Jetzt funktioniert mein Prog perfekt.

mfg
tom


Bearbeitung von loddab:
cpp-Tags gesetzt

Dieser Post wurde am 15.10.2003 um 12:56 Uhr von Loddab editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ KDevelop / Qt / wxWidget ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: