господа! у меня ещё такой вопрос: По примеру из книги по программированию на 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
Попробуй из myview.cpp
удалить эти строки:
myView::myView(QWidget *parent)
: QWidget(parent)
{
}
Чтоб осталось только это:
#include "myview.h"
myView::~myView()
{
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
что именно делает ф-ия clear()? seekg - как я понял - перемещает "курсор" в позицию (0), то есть в начало строки, а clear что-то чистит?
Не понимаю, каким образом в строку с результатом попадет мусор, и откуда
Подскажите пожалуйста как парсить курс валют с определённого сайта на с++ ( visual studio 2012) Windows Forms Может быть есть книги с гайдами?
Дали мне мне лендинг править а тут после футера нехилый отступ с пустотойВсе элементы находятся в position absolute или relative переписывать я это не хочу