2015-11-18 2 views
0

Я хотел бы получить события нажатия мыши на QPixmap в Qt. Я попытался его подкласса с помощью:Подклассификация QPixmap

class CustomPixmap : public QPixmap 
{ 
    Q_OBJECT 

public: 
    CustomPixmap(QPaintDevice *parent = NULL); 
    ~CustomPixmap() {}; 

protected: 
    void mousePressEvent(QMouseEvent *event); 

}; 

Но он не компилируется из-за ошибки

./moc_output/moc_customPixmap.cpp:52:8: error: no member named 
     'staticMetaObject' in 'QPixmap'; did you mean simply 'staticMetaObject'? 

Принимая Q_OBJECT из компилируется нормально, но mousePressEvent не называется. Как я могу правильно подклассифицировать QPixmap для получения событий нажатия мыши?

ответ

0

я, наконец, оказался в использовании QPushButton:

QPushButton *button = new QPushButton; 
button->setIcon(QIcon(myQPixmap)); 
buttonWidget=MySceneClass->scene()->addWidget(button); 
QObject::connect(button, SIGNAL(clicked()),this, SLOT(clickedSlot())); 
3

Не имеет смысла получать события мыши в QPixmap, поскольку QPixmap не является QWidget, поэтому QPixmap никогда не присутствует непосредственно в вашем графическом интерфейсе Qt.

is На экране есть QWidget, который рисует и отображает QPixmap. Это может быть QLabel или, возможно, QWidget, метод paintEvent (QPaintEvent *) переопределен для вызова painter.drawPixmap() с вашим QPixmap в качестве аргумента. Разумное место для переопределения mousePressEvent() будет находиться в подклассе этого виджета, а не подклассифицировать QPixmap.

+0

Спасибо; Так конкретно, как связать мой QPixmap с QWidget? –

+0

Добавление Pixmap в мою QGraphicsScene дает мне QGraphicsPixmapItem. Это тот, на котором я должен перехватывать события мыши? Если да, то как, спасибо. –

+0

Переопределите метод QGraphicsItem :: mousePressEvent (QGraphicsSceneMousePressEvent *). http://doc.qt.io/qt-4.8/qgraphicsitem.html#mousePressEvent –

 Смежные вопросы

  • Нет связанных вопросов^_^