QGraphicsScene und eigene QGraphicsItem-Klassen
Verfasst: 8. Dezember 2009 22:05
Um meiner Applikation ein bisschen Farbe einzuhauchen, habe ich 2 QGraphicsItem-Klassen erstellt. Die beiden Klassen sind eine Art Button, dass heisst ich möchte den QMouseEvent neu implementieren.
Um die Objekte nun benutzen zu können, habe ich ne QGraphicsScene erstellt und dazu eine QGraphicsView. Die Elemente habe ich dazugefügt, allerdings wird ein Element bsp. nur halb dargestellt (hab mit den Koordinaten herumgespielt, bringe nie das ganze Element in die Scene) und der MouseEvent funktioniert nicht.
Die Stelle mit der QGrahicsScene:
An was kann das liegen? Es gibt keine andere Möglichkeit, diese Elemente ohne QGraphicsScene zu implementieren, damit auch die MouseEvents funktionieren, oder?
Um die Objekte nun benutzen zu können, habe ich ne QGraphicsScene erstellt und dazu eine QGraphicsView. Die Elemente habe ich dazugefügt, allerdings wird ein Element bsp. nur halb dargestellt (hab mit den Koordinaten herumgespielt, bringe nie das ganze Element in die Scene) und der MouseEvent funktioniert nicht.
Code: Alles auswählen
notifyButton::notifyButton(QSize nsize, mainwindow *main) :
size(nsize),
mainW(main)
{
eventText = "You have a new invitation to an event!";
buddyText = "You have a new buddyrequest!";
popup = new QFrame(mainW, Qt::Popup | Qt::Window);
popup->resize(100, 100);
mainLayout = new QVBoxLayout(popup);
mainLayout->setAlignment(Qt::AlignTop);
eventLabel = new QLabel(popup);
eventLabel->setText(eventText);
buddyLabel = new QLabel(popup);
buddyLabel->setText(buddyText);
popup->hide();
}
void notifyButton::mousePressEvent(QGraphicsSceneMouseEvent *event)
{
popup->show();
qDebug() << "Test";
}
void notifyButton::paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
QWidget *widget)
{
painter->setPen(QPen(Qt::black, 1, Qt::SolidLine));
painter->setBrush(QBrush(activeColor, Qt::SolidPattern));
painter->drawRect(0, 0, size.width(), size.height());
}Code: Alles auswählen
scene = new QGraphicsScene(0, 0, 400, 400);
scene->addItem(messageButton);
view = new QGraphicsView(scene);
layout0->addWidget(view);