首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >子类QPixmap

子类QPixmap
EN

Stack Overflow用户
提问于 2015-11-18 22:38:54
回答 2查看 247关注 0票数 0

我想在Qt中的QPixmap上得到鼠标按下事件。我试图使用以下方法对其进行子类:

代码语言:javascript
复制
class CustomPixmap : public QPixmap
{
    Q_OBJECT

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

protected:
    void mousePressEvent(QMouseEvent *event);

};

但是由于错误,它没有编译。

代码语言:javascript
复制
./moc_output/moc_customPixmap.cpp:52:8: error: no member named
      'staticMetaObject' in 'QPixmap'; did you mean simply 'staticMetaObject'?

将Q_OBJECT取出来可以编译,但不调用mousePressEvent。如何正确地子类QPixmap以获取鼠标按下事件?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-11-19 20:23:11

最后,我使用了一个QPushButton:

代码语言:javascript
复制
QPushButton *button = new QPushButton;
button->setIcon(QIcon(myQPixmap));
buttonWidget=MySceneClass->scene()->addWidget(button);
QObject::connect(button, SIGNAL(clicked()),this, SLOT(clickedSlot()));
票数 0
EN

Stack Overflow用户

发布于 2015-11-19 04:08:04

在QPixmap上接收鼠标事件是没有意义的,因为QPixmap不是QWidget,因此QPixmap永远不会直接出现在Qt中。

屏幕上的是绘制和显示QPixmap的某种类型的QPixmap。这可能是一个QLabel,也可能是一个QWidget,其paintEvent(QPaintEvent *)方法已被重写,以调用以QPixmap作为参数的painter.drawPixmap()。重写mousePressEvent()的合理位置应该在该小部件的子类中,而不是通过子类QPixmap。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33791820

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档