[GELÖST] Q_OBJECT funtioniert bei qwt Klasse nicht

Alles rund um die Programmierung mit Qt
Antworten
insertcoin
Beiträge: 54
Registriert: 19. Mai 2008 13:08

[GELÖST] Q_OBJECT funtioniert bei qwt Klasse nicht

Beitrag von insertcoin »

Ich habe eine Klasse die von QwtDial erbt, in dieser möchte ich einen Slot verwenden.. sobald ich aber Q_OBJECT einfüge, hab ich einen Systemfehler wenn ich meine .exe ausführe.. das kompilieren funtioniert..
bei Klassen die von Qt Klassen erben funtioniert auch das ausführen der .exe .. hab mein qmake schon mehrmals neu drüber laufen lassen bringt alles nichts .. ist also nicht der Link Fehler mit dem immer alle kommen ..
hatte vielleicht jemand schon ein ähnliches problem ??
Zuletzt geändert von insertcoin am 7. August 2008 21:38, insgesamt 3-mal geändert.
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Beitrag von solarix »

Vor ein paar Monaten habe ich genau dasselbe (durch)gemacht (eigene Plugins welche von Qwt-Klassen erben) und stolperte da doch hin und wieder...

Kannst du noch ein paar Infos liefern wie:

- Befindet sich die neue Klasse direkt im Programm, oder in einer Library oder Plugin?
- Header deiner neuen Dial-Klasse
- pro-Datei deines Programms, Library oder Plugins
- genauer Wortlaut des "Systemfehlers"
insertcoin
Beiträge: 54
Registriert: 19. Mai 2008 13:08

Beitrag von insertcoin »

die klasse befindet sich im programm ..
die klasse hat keine headerfile, sondern ist in einer headerfile in der ich mehrere kleine klassen reinpacken möchte ..

Code: Alles auswählen

#ifndef CLASSCOLLECTION_H
#define CLASSCOLLECTION_H

#include <qwt_dial.h>
#include <qpainter.h>
#include <qwt_dial_needle.h>
#include <QLCDNumber>
#include <QtGui>
#include <QObject>

class Dial : public QwtDial
{
      
public:
       

      Dial(double gap, int dividingLines, int maxValue, int minValue = 0 )
      {        
        setWrapping(false);
        setReadOnly(true); 

        setOrigin(135.0);
        setScaleArc(0.0, 270.0); 
        
        QwtDialSimpleNeedle *needle = new QwtDialSimpleNeedle(
            QwtDialSimpleNeedle::Arrow, true, Qt::blue, 
            QColor(Qt::gray).light(130));
        setNeedle(needle); // Nadel einsetzen
        
        setScaleTicks(1, 4, 8); 
        setScale(1, dividingLines, gap); 
        setRange(minValue,maxValue);      }
          
};

/******************************************************************************************************************/


class DigitalTimer : public QLCDNumber
{
    Q_OBJECT

public:
    
    QTime *time;   
       
DigitalTimer()
{
    setSegmentStyle(Filled);
	
    time = new QTime(0,0);
    QTimer *timer = new QTimer(this);
    connect(timer, SIGNAL(timeout()), this, SLOT(showTime()));
    timer->start(1000);
	display(time->toString("mm:ss"));
}

private slots:
        
void showTime()
{
    *time = time->addSecs(1);
    display(time->toString("mm:ss"));
    }

};

#endif
in meiner DigitalTimer Klasse macht das makro keine Probleme ..

die .pro File sieht so aus, ich verwende nur Libraries ..

Code: Alles auswählen

######################################################################
# Automatically generated by qmake (2.01a) Thu Aug 7 15:53:14 2008
######################################################################

TEMPLATE = app
TARGET = 
DEPENDPATH += .
INCLUDEPATH += D:/programmieren/qwt-5.1.1/src
LIBS += -LD:/programmieren/qwt-5.1.1/lib
LIBS += -lqwt

# Input
HEADERS += classcollection.h led.h MainWindow.h page1.h page2.h
SOURCES += led.cpp main.cpp MainWindow.cpp page1.cpp page2.cpp
der Systemfehler tritt auf wenn ich die .exe starte und lautet:
The application failed to initialize properly (0xc0000005).Click on OK to terminate the application.
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Beitrag von solarix »

The application failed to initialize properly (0xc0000005).Click on OK to terminate the application.
Genau daran sass ich ebenfalls ein paar Tage :roll:
Lass mich mal überlegen.. ich hab' den Code nicht gerade vor mir, aber versuch mal:

Code: Alles auswählen

DEFINES += QWT_DLL
in deiner pro-File


[edit]
.. und hinterher ein sauberes "make distclean; qmake; make"
insertcoin
Beiträge: 54
Registriert: 19. Mai 2008 13:08

Beitrag von insertcoin »

das ist es =) .. damit hast du mir wahrscheinlich einen haufen zeit erspart, vielen dank ..
Antworten