Я создал собственный QGraphicsPixMap QGraphicsItem, так как мне нужно иметь функции, которые запускаются, когда кто-то нажимает на него! Заголовок для этого показан ниже:
#ifndef NEWGPIXMAP_H
#define NEWGPIXMAP_H
#include <QObject>
#include <QGraphicsPixmapItem>
#include <QGraphicsSceneMouseEvent>
class NewGPixmap : public QObject, public QGraphicsPixmapItem
{
Q_OBJECT
public:
NewGPixmap();
void mousePressEvent(QGraphicsSceneMouseEvent *event);
// void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
// void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
};
#endif // NEWGPIXMAP_H
И. cpp для этого можно увидеть здесь:
#include "newgpixmap.h"
#include <iostream>
#include <QPointF>
NewGPixmap::NewGPixmap()
{
}
void NewGPixmap::mousePressEvent(QGraphicsSceneMouseEvent *event)
{
QPointF pos = event->pos();
int x = pos.x();
int y = pos.y();
std::cout<<x<<" "<<y<<std::endl;
}
Когда я пытаюсь обновить растровое изображение в QGraphicsScene ( хранится в переменной с именем "scene"). Я не получаю ошибок, однако PixMap не отображается.
Это код, который я использовал до реализации моей собственной QGraphicsPixMap, которая работала нормально:
void MainWindow::on_openImage_triggered()
{
QString fileName = QFileDialog::getOpenFileName(this, tr("Choose File"));
QImage image(fileName);
QGraphicsPixmapItem* item = new QGraphicsPixmapItem(QPixmap::fromImage(image));
scene->clear();
scene->addItem(item);
}
И теперь, когда я использую свою собственную реализацию QGraphicsPixMap, у меня есть следующий код:
void MainWindow::on_openImage_triggered()
{
QString fileName = QFileDialog::getOpenFileName(this, tr("Choose File"));
QImage image(fileName);
NewGPixmap item;
item.setPixmap(QPixmap::fromImage(image));
scene->clear();
scene->addItem(&item);
}
Проблема в том, что растровое изображение не загружается в QGraphicsScene.
Спасибо за ваше помощь!