我有一个从QGraphicsPixmapItem派生的自定义类。它的名为GraphPixmapItemCustom,它的重载方法是:
void GraphPixmapItemCustom::mousePressEvent(QGraphicsSceneMouseEvent *event)
{
QGraphicsPixmapItem::mousePressEvent(event);
GraphMarkItemCustom *ptr;
if(event->button() == Qt::RightButton)
{
qDebug("Before emit");
emit addPoint(QPointF(event->pos().x(), event->pos().y()));
qDebug("After emit");
markList.append(new GraphMarkItemCustom(QPointF(event->pos().x(), event->pos().y())));
ptr = markList.last();
markGroup->addToGroup(ptr);
//this->scene()->addItem(ptr);
}
}
信号在标题处声明:
signals:
void addPoint(QPointF position);
在主类中有一个指向GraphPixmapItemCustom类的对象的指针,名为
private:
GraphPixmapItemCustom *pixItemRGB;
在主类我有一个名为:
的插槽private slots:
void pointAdd(QPointF position);
在主类构造函数中,我有一个连接:
connect(pixItemRGB, SIGNAL(addPoint(QPointF)), this, SLOT(pointAdd(QPointF)));
在插槽中,我只有qDebug("YUPPY IT ACTUALLY WORKS!");
但是这个插槽并没有被解雇。为什么?我删除了所有moc文件和所有不必存在的内容。因此,只有.pro
,.h
和.cpp
个文件以及.ui
形成了必要的内容。
我检查过Google上的大多数热门内容。什么是最好的(我没有确定 - 也许我修改了一些东西)它有效!我记得这种联系的工作效果。救命啊!
答案 0 :(得分:1)
在使用new
运算符创建GraphPixmapItemCustom对象后,您必须连接信号。