[solved] Kompilierfehler bei QToolButton Vorwärtsdeklaration

Alles rund um die Programmierung mit Qt
Antworten
RogerWilco
Beiträge: 61
Registriert: 26. November 2009 00:08
Kontaktdaten:

[solved] Kompilierfehler bei QToolButton Vorwärtsdeklaration

Beitrag von RogerWilco »

Hallo,
beim Versuch das Programmierbeispiel "Plotter" aus "C++ GUI Programmierung mit Qt 4" (Dt. Ausgabe ab S. 169) nachzuprogrammieren (im ersten Anlauf erstmal abzutippen) bekomme ich direkt am Anfang folgende Fehlermeldung:

Code: Alles auswählen

/media/disk/NvhTool/plotter.cpp:12: error: invalid use of incomplete type ‘struct QToolButton’

Code: Alles auswählen

#include "plotter.h"

Plotter::Plotter(QWidget *parent) :
    QWidget(parent)
{
    setBackgroundRole(QPalette::Dark);
    setAutoFillBackground(true);
    setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
    setFocusPolicy(Qt::StrongFocus);
    RubberBandIsShown = false;

    ZoomInButton = new QToolButton(this);        // hier stimmt was nicht!
    ZoomInButton->setIcon(QIcon(":/Button_zoom_in.png"));
    ZoomInButton->adjustSize();
    connect(ZoomInButton, SIGNAL(clicked()), this, SLOT(zoomIn()));

    ZoomOutButton = new QToolButton(this);
    ZoomOutButton->setIcon(QIcon(":/Button_zoom_in.png"));
    ZoomOutButton->adjustSize();
    connect(ZoomOutButton, SIGNAL(clicked()), this, SLOT(zoomOut()));

    setPlotSettings(cPlotSettings());

}
im Header:

Code: Alles auswählen

/media/disk/NvhTool/plotter.h:11: error: forward declaration of ‘struct QToolButton’

Code: Alles auswählen

#ifndef PLOTTER_H
#define PLOTTER_H

#include <QWidget>

#include <QMap>
#include <QPixmap>
#include <QVector>


class QToolButton;         // hier stimmt was nicht!!! Zeile 11
class PlotSettings;


class Plotter : public QWidget
{
Q_OBJECT
public:
    Plotter(QWidget *parent = 0);

    void setPlotSettings(const PlotSettings &settings);
    void setCurveData (int id, const QVector<QPointF> &data);
    void clearCurve(int Id);
    QSize minimumSizeHint() const;
    QSize sizeHint() const;



signals:

public slots:

    void zoomIn();
    void zoomOut();

protected:
    void paintEvent(QPaintEvent *event);
    void resizeEvent(QResizeEvent *event);
    void mousePressEvent(QMouseEvent *event);
    void mouseMoveEvent(QMouseEvent *event);
    void mouseReleaseEvent(QMouseEvent *event);
    void keyPressEvent(QKeyEvent *event);
    void wheelEvent(QWheelEvent *event);


private:
    void updateRubberBandRegion();
    void refreshPixmap();
    void drawGrid(QPainter *painter);
    void drawCurves(QPainter *painter);

    enum {Margin = 50};

    QToolButton *ZoomInButton;
    QToolButton *ZoomOutButton;
    QMap <int, QVector<QPointF> >CurveMap;
    QVector<PlotSettings> ZoomStack;
    int CurZoom;
    bool RubberBandIsShown;
    QRect RubberBandRect;
    QPixmap Pixmap;

};
Der Fehler wiederholt sich entsprechen auch weiter unten immer wieder, wenn auf den Button zugegriffen wird...
Ich halte das erstmal für Folgefehler...

Hat jemand eine Idee?
Liegt das an der Einbindung externer Resourcen?
Eigentlich müsste doch schon eine Klasse QToolButton existieren, oder?
Zuletzt geändert von RogerWilco am 29. Dezember 2009 23:05, insgesamt 1-mal geändert.
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Wie wärs mal mit einem

Code: Alles auswählen

#include <QToolButton>
?
RogerWilco
Beiträge: 61
Registriert: 26. November 2009 00:08
Kontaktdaten:

Beitrag von RogerWilco »

Mhh...
das scheint zu helfen. Danke.
Habe ich vorhin nicht getestet, weil der Autor (und der arbeitet wohl für Qt / Nokia) auch das include weggelassen hat und QToolButton doch von QWidget erbt, oder?
Und QWidget ist schon eingebunden...

Allerdings scheinen dort noch einige andere Haken zu kommen. Etwas enttäuschend für ein Lehrbuch. Vielleicht hat sich das aber auch mit der neuen Qt Version geändert...
Antworten