Anzeige:
Ergebnis 1 bis 5 von 5

Thema: [QT] vtable for >class< not found

  1. #1
    Registrierter Benutzer
    Registriert seit
    16.09.2001
    Beiträge
    1.182

    [QT] vtable for >class< not found

    Hallo,

    ich versuch mich gerade an meiner ersten QT Anwendung, das ganze kompiliert wunderbar nur beim linken bekomme ich fehle wie:
    Code:
    /tmp/ccdvER22.o(.text+0x1c): In function `PerfWidget::PerfWidget(QWidget*, char const*)':
    qtperf.cpp: undefined reference to `vtable for PerfWidget'

    Danke im Vorraus, lg

    Code:
    #include <qapplication.h>
    #include <qwidget.h>
    
    
    class PerfWidget : public QWidget
    {
        Q_OBJECT
    public:
        PerfWidget();
        QSizePolicy sizePolicy() const;
    
    protected:
        void paintEvent( QPaintEvent * );
    };
    
    PerfWidget::PerfWidget() : QWidget()
    {
        setPalette( QPalette( QColor( 250, 250, 200) ) );
    }
    
    void PerfWidget::paintEvent( QPaintEvent * )
    {
    }
    
    
    QSizePolicy PerfWidget::sizePolicy() const
    {
        return QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding );
    }
    
    
    int main( int argc, char** argv )
    {
        QApplication app( argc, argv );
        QWidget *window = new QWidget();
        app.setMainWidget(window);
        window->show();
        return app.exec();
    }
    Geändert von Lin728 (21-08-2017 um 15:38 Uhr)

  2. #2
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    Erst dachte ich das Problem sei dass du im Konstruktor "setPalette" aufrufst und das eine virtuelle Methode ist (falls das eine ist ).

    Allerdings läuft das bei mir erst, wenn ich das Q_OBJECT Macro rausschmeisse. Bin gerade etwas verwirrt.

    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  3. #3
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    So eine Meldung ist meisten ein Hinweis auf einen fehlenden MOC Aufruf.

    Mach mal ein

    make clean

    gefolgt von (nachdem du geprüft hast, ob der Header im .pro File auch bei HEADERS eingetragen ist)

    qmake meinproject.pro
    make

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  4. #4
    Registrierter Benutzer
    Registriert seit
    16.09.2001
    Beiträge
    1.182

    Danke!

    @anda_skoa:
    Ja stimmt, ich habe moc nicht verwendet da ich sowieso keine signal/slots verwendet habe.
    Wahrscheinlich enthält das Makro code welches moc benötigt.
    Geändert von Lin728 (21-08-2017 um 15:04 Uhr)

  5. #5
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Das Q_OBJECT Macro triggert beim Headerparsen von qmake das erzeugen der moc Regeln.

    Daher geht es entweder ohne, oder mit einem neuen Makefile nach einfügen des Macros

    ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •