Vielen Dank es klappt! Ich hätte allerdings noch ein Problem bei dem du mir vielleicht helfen kannst?!:)
Ich möchte es ermöglichen, dass man ein Bild in mein PostIt zieht und dieses dann dort angezeigt wird.Dies will mit aber einfach nicht gelingen.
DAs Kästchen in das man die Bilder ziehen soll:
Code: Alles auswählen
#ifndef DRAGDROPRECT_H
#define DRAGDROPRECT_H
#include <QGraphicsItem>
#include <QPainter>
#include <QRectF>
#include <QTextItem>
#include <QGraphicsTextItem>
#include <Qpen>
#include <QGraphicsSceneDragDropEvent>
#include <QMimeData>
#include <QImage>
#include <QCoreApplication>
#include <Qcolor>
#include <QPixmap>
class DragDropRect : public QGraphicsItem
{
public:
DragDropRect(QGraphicsItem* parent = NULL);
QBrush brush1;
QImage image;
QImage getImage();
bool dragOver;
QColor color;
QPixmap pixmap;
protected:
void paint(QPainter *painter,
const QStyleOptionGraphicsItem *option,
QWidget *widget);
QRectF boundingRect() const;
void dragEnterEvent(QGraphicsSceneDragDropEvent *event) Q_DECL_OVERRIDE;
void dragLeaveEvent(QGraphicsSceneDragDropEvent *event) Q_DECL_OVERRIDE;
void dropEvent(QGraphicsSceneDragDropEvent *event) Q_DECL_OVERRIDE;
};
#endif // DRAGDROPRECT
Code: Alles auswählen
#include "../header/dragdroprect.h"
#include <QMessageBox>
DragDropRect::DragDropRect(QGraphicsItem* parent) : QGraphicsItem(parent),dragOver(false),color(Qt::lightGray){
setAcceptDrops(true);
}
QRectF DragDropRect::boundingRect() const{
return QRectF(0,0,100,100);
}
void DragDropRect::dropEvent(QGraphicsSceneDragDropEvent *event)
{
event->setAccepted(true);
image = qvariant_cast<QImage>(event->mimeData()->imageData());
pixmap = qvariant_cast<QPixmap>(event->mimeData()->imageData());
dragOver=true;
}
QImage DragDropRect::getImage()
{
return image;
}
void DragDropRect::dragEnterEvent(QGraphicsSceneDragDropEvent *event)
{
}
void DragDropRect::dragLeaveEvent(QGraphicsSceneDragDropEvent *event)
{
}
void DragDropRect::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget){
QPen pen1(Qt::DashLine);
painter->setPen(pen1);
painter->setBrush(dragOver ? color.light(130) : color);
painter->drawRoundedRect(boundingRect(),5,5);
painter->drawText(4,50,"Foto hierhin ziehen");
}
Und mein PostIt in dem das Bild abgebildet werden soll:
Code: Alles auswählen
#ifndef POSTIT_H
#define POSTIT_H
#include <QGraphicsItem>
#include <QPainter>
#include <QRectF>
#include <QTextItem>
#include <QGraphicsTextItem>
#include "dragdroprect.h"
#include <QCoreApplication>
class PostIt : public QGraphicsItem
{
public:
PostIt(QGraphicsItem* parent = NULL);
DragDropRect *rect;
protected:
void paint(QPainter *painter,
const QStyleOptionGraphicsItem *option,
QWidget *widget);
QRectF boundingR
Code: Alles auswählen
#include "../header/postit.h"
PostIt::PostIt(QGraphicsItem* parent) : QGraphicsItem(parent){
// den Textblock erstellen
setFlag(QGraphicsItem::ItemIsMovable);
QGraphicsTextItem *text = new QGraphicsTextItem(this);
text->setPlainText("Text hier eingeben!");
text->setPos(20,20);
text->setTextInteractionFlags(Qt::TextEditable);
text->setTextWidth(160);
rect = new DragDropRect(this);
rect->setPos(250,0);
}
QRectF PostIt::boundingRect() const{
return QRectF(0,0,400,400);
}
void PostIt::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget){
painter->setPen(Qt::black);
painter->setBrush(Qt::yellow);
painter->drawRoundedRect(0,0,400,400,5,5);
painter->drawRoundedRect(0,0,200,100,5,2);
painter->drawImage(0,0,rect->getImage());
}
Dies funktioniert einfach nicht und ich kann nicht verstehen warum dies nicht geht. Über ein bisschenHilfe wäre ich sehr erfreut!
Liebe Grüße