prototype for “…” does not match any in class “…”

187
05 июля 2018, 13:50

господа! у меня ещё такой вопрос: По примеру из книги по программированию на Qt и C++, написал программу, которая, методом графического представления(QGraphicsView, QGraphicsScene и QGraphicsItem), должна отображать маленькую окружность и картинку(QPixmap), которая является потомком окружности и четыре кнопки, которые позволяют уменьшать, увеличивать, и поворачивать изображение. Результатом компиляции вылетают 2 ошибки: 1)prototype for 'myView::myView(QWidget*)' does not match any in class 'myView' myView::myView(QWidget *parent)

2)candidates are: myView::myView(const myView&) class myView : public QGraphicsView

Помогите, пожалуйста разобраться, что это за ошибки и как их устранить. Заранее спасибо!

Вот код:

файл main.cpp

#include "myview.h"
#include <QApplication>
class SimpleItem : public QGraphicsItem
{
private:
    enum{nPenWidth = 3};
public:
    virtual QRectF boundingRect() const
    {
        QPointF ptPosition(-10 - nPenWidth, -10 - nPenWidth);
        QSizeF size(20 + nPenWidth * 2, 20 + nPenWidth * 2);
        return QRectF(ptPosition, size);
    }
    virtual void paint(QPainter* ppainter, const QStyleOptionGraphicsItem*, QWidget*)
    {
        ppainter->save();
        ppainter->setPen(QPen(Qt::blue, nPenWidth));
        ppainter->drawEllipse(-10, -10, 20, 20);
        ppainter->restore();
    }
    virtual void mousePressEvent(QGraphicsSceneMouseEvent* pe)
    {
        QApplication::setOverrideCursor(Qt::PointingHandCursor);
        QGraphicsItem::mousePressEvent(pe);
    }
    virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent* pe)
    {
        QApplication::restoreOverrideCursor();
        QGraphicsItem::mouseReleaseEvent(pe);
    }
};
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QWidget wgt;
    //Создаём сцену и задаём ей параметры
    QGraphicsScene scene(QRectF(-100, -100, 640, 480));
    //Задаём область отображения сцены и создаём кнопки
    myView* pView = new myView(&scene);
    QPushButton* pcmdZoomIn = new QPushButton("Zoom &In");
    QPushButton* pcmdZoomOut = new QPushButton("Zoom &Out");
    QPushButton* pcmdRotateLeft = new QPushButton("Rotate &Left");
    QPushButton* pcmdRotateRight = new QPushButton("Rotate &Right");
    //Устанавливаем сглаживание нарисованной фигуры
    pView->setRenderHint(QPainter::Antialiasing, true);
    //Добавляем фигуру в сцену
    SimpleItem* pSimpleItem = new SimpleItem;
    scene.addItem(pSimpleItem);
    pSimpleItem->setPos(0, 0);
    pSimpleItem->setFlags(QGraphicsItem::ItemIsMovable);
    //Добавляем картинку в сцену
    QGraphicsPixmapItem* pPixmapItem = scene.addPixmap(QPixmap("../101res/img/png/image.png"));
    pPixmapItem->setParentItem(pSimpleItem);
    pPixmapItem->setFlags(QGraphicsItem::ItemIsMovable);
    //Задаём действия кнопкам
    QObject::connect(pcmdZoomIn, SIGNAL(clicked()), pView, SLOT(ZoomIn()));
    QObject::connect(pcmdZoomOut, SIGNAL(clicked()), pView, SLOT(ZoomOut()));
    QObject::connect(pcmdRotateLeft, SIGNAL(clicked()), pView, SLOT(Left()));
    QObject::connect(pcmdRotateRight, SIGNAL(clicked()), pView, SLOT(Right()));
    //Задаём расположение объектов
    QVBoxLayout* pvbl = new QVBoxLayout;
    pvbl->addWidget(pView);
    pvbl->addWidget(pcmdZoomIn);
    pvbl->addWidget(pcmdZoomOut);
    pvbl->addWidget(pcmdRotateLeft);
    pvbl->addWidget(pcmdRotateRight);
    wgt.setLayout(pvbl);
    wgt.setWindowTitle("События сцены");
    wgt.show();
    return a.exec();
}

файл myview.cpp

#include "myview.h"
myView::myView(QWidget *parent)
    : QWidget(parent)
{
}
myView::~myView()
{
}

файл myview.h

#ifndef MYVIEW_H
#define MYVIEW_H
#include <QWidget>
#include <QtWidgets>
class myView : public QGraphicsView
{
    Q_OBJECT
public:
    myView(QGraphicsScene *pScene, QWidget* parent = 0)
        : QGraphicsView(pScene, parent)
    {
    }
    ~myView();
public slots:
    void ZoomIn()
    {
        scale(1.1, 1.1);
    }
    void ZoomOut()
    {
        scale(1/1.1, 1/1.1);
    }
    void Left()
    {
        rotate(-5);
    }
    void Right()
    {
        rotate(5);
    }
};
#endif // MYVIEW_H
Answer 1

Попробуй из myview.cpp удалить эти строки:

myView::myView(QWidget *parent)
: QWidget(parent)
{
}

Чтоб осталось только это:

#include "myview.h"
myView::~myView()
{
}
READ ALSO
C++ If/of-stream. Значение ф-ии file.clear()

C++ If/of-stream. Значение ф-ии file.clear()

что именно делает ф-ия clear()? seekg - как я понял - перемещает "курсор" в позицию (0), то есть в начало строки, а clear что-то чистит?

173
WideCharToMultiByte конвертирует строку, но добавляет мусор

WideCharToMultiByte конвертирует строку, но добавляет мусор

Не понимаю, каким образом в строку с результатом попадет мусор, и откуда

175
Парсинг курса валют Visual Studio c++

Парсинг курса валют Visual Studio c++

Подскажите пожалуйста как парсить курс валют с определённого сайта на с++ ( visual studio 2012) Windows Forms Может быть есть книги с гайдами?

190
Проблемы верстки

Проблемы верстки

Дали мне мне лендинг править а тут после футера нехилый отступ с пустотойВсе элементы находятся в position absolute или relative переписывать я это не хочу

178