子类化 QPixmap
Subclassing 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 以获得鼠标按下事件?
在 QPixmap 上接收鼠标事件没有意义,因为 QPixmap 不是 QWidget,因此 QPixmap 永远不会直接出现在您的 Qt GUI 中。
屏幕上是的是某种绘制和显示QPixmap的QWidget。这可能是一个 QLabel 或 QWidget,其 paintEvent(QPaintEvent *) 方法已被覆盖以调用 painter.drawPixmap() 并将您的 QPixmap 作为参数。覆盖 mousePressEvent() 的明智位置是在该小部件的子类中,而不是通过子类化 QPixmap。
我终于使用了 QPushButton:
QPushButton *button = new QPushButton;
button->setIcon(QIcon(myQPixmap));
buttonWidget=MySceneClass->scene()->addWidget(button);
QObject::connect(button, SIGNAL(clicked()),this, SLOT(clickedSlot()));
我想在 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 以获得鼠标按下事件?
在 QPixmap 上接收鼠标事件没有意义,因为 QPixmap 不是 QWidget,因此 QPixmap 永远不会直接出现在您的 Qt GUI 中。
屏幕上是的是某种绘制和显示QPixmap的QWidget。这可能是一个 QLabel 或 QWidget,其 paintEvent(QPaintEvent *) 方法已被覆盖以调用 painter.drawPixmap() 并将您的 QPixmap 作为参数。覆盖 mousePressEvent() 的明智位置是在该小部件的子类中,而不是通过子类化 QPixmap。
我终于使用了 QPushButton:
QPushButton *button = new QPushButton;
button->setIcon(QIcon(myQPixmap));
buttonWidget=MySceneClass->scene()->addWidget(button);
QObject::connect(button, SIGNAL(clicked()),this, SLOT(clickedSlot()));