Code: Alles auswählen
#ifndef BATTLEFLD_H
#define BATTLEFLD_H
#include <QtGui>
#include <iostream>
//template <class T>
class QBattlefield : public QWidget
{
private:
QGraphicsView *battlefield;
QGraphicsScene *scene;
//what should be possible?
void move(QGraphicsItem*);
void shoot(QGraphicsItem*);
void melee(QGraphicsItem*);
void defeat(QGraphicsItem*);
signals:
//unit moved...
public:
QBattlefield(QGraphicsScene *scene = 0, QWidget *parent = 0);
public slots:
void load_scene(QGraphicsScene*);
QGraphicsItem *getItem_moved();
protected:
//void dragEnterEvent(QDragEnterEvent *event);
//void dropEvent(QDropEvent *event);
void mousePressEvent(QMouseEvent *event);
};
#endifCode: Alles auswählen
#include "QBattlefield.h"
QBattlefield::QBattlefield(QGraphicsScene *scene, QWidget *parent) : QWidget(parent)
{
QVBoxLayout *main_layout = new QVBoxLayout(this);
battlefield = new QGraphicsView;
battlefield->setInteractive(true);
QGraphicsScene *foo = new QGraphicsScene;
foo->addPixmap(*(new QPixmap("/home/dgdaniel/devel/iwars_qt/0.01/bin/images/orks/Ork_Kult_Of_Speed_Deth_Kopta.gif") ) );
battlefield->setScene(foo);
main_layout->addWidget(battlefield);
}
//protected:
void QBattlefield::mousePressEvent(QMouseEvent *event)
{
std::cout<<"moused got pressed"<<std::endl;
QWidget *child = static_cast<QWidget*>(childAt(event->pos() ) );
if (!child)
{
std::cout<<"no item found"<<std::endl;
return;
}
}edit:
das beispiel scheint auch nicht zu klappen?!
Code: Alles auswählen
void QBattlefield::mousePressEvent(QMouseEvent *event)
{
if (QGraphicsItem *item = battlefield->itemAt(event->pos() ) )
{
qDebug() << "You clicked on item" << item;
}
else
qDebug() << "You didn't click on an item.";
}