при попытке создать ссылку на удаленную функцию при создании класса, унаследованного от QGraphicsPixmapItem в QT - PullRequest
0 голосов
/ 19 марта 2019

Я хотел бы вставить изображение в мою сцену и сделать что-нибудь, когда будет обнаружено изменение положения изображения.Чтобы реализовать это, я создаю класс BackgroundPic, унаследованный от QGraphicsPixmapItem.Однако возникает ошибка C2280: «BackgroundPic :: BackgroundPic (const BackgroundPic &)»: при попытке скомпилировать ссылку на удаленную функцию (компиляция исходного файла mainwindow.cpp).Кто-нибудь знает в чем проблема в моем коде?

#include <qstring.h>
#include <qgraphicsproxywidget.h>


class BackgroundPic: public QGraphicsPixmapItem
{
public:
    BackgroundPic()
    {
        show_flag = true;
        moveable_flag = true;
    }

    //QString name;
    float x_original;       //physical
    float y_original;
    float x;        //physical
    float y;
    QString pic_address;
    bool show_flag;
    bool moveable_flag;

    QVariant itemChange(GraphicsItemChange change, const QVariant &value)
    {
        if (change == ItemPositionChange)
        {
            x = x_original + value.toPointF().x();
            y = y_original + value.toPointF().y();
        }
        return QGraphicsItem::itemChange(change, value);
    }
};

1 Ответ

1 голос
/ 19 марта 2019

Проблема, кажется, ясна, и она не находится в коде, который вы опубликовали.В файле mainwindow.cpp есть место, где вы вызываете конструктор копирования (это BackgroundPic :: BackgroundPic (const BackgroundPic &)), но эта функция недоступна.

Обычно конструктор копирования определяется автоматически (вы можете прочитать о правиле нуля и правиле пяти ), но в вашем случае это не так.Это происходит потому, что вы наследуете от класса, у которого нет конструктора копирования.Это означает, что ваш класс также не подлежит копированию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...