Ich bin mit einem Problem konfrontiert, um Klicks in Qt zu behandeln. Ich habe die folgende Klasse:Qt Objektsignale sind nicht mit Methoden (Handler) verbunden
class MyRectItem : public QObject, public QGraphicsEllipseItem{
Q_OBJECT
public:
MyRectItem(double x,double y, double w, double h)
: QGraphicsEllipseItem(x,y,w,h)
{}
public slots:
void test() {
QMessageBox::information(0, "This", "Is working");
printf("asd");
}
signals:
void selectionChanged(bool newState);
protected:
QVariant itemChange(GraphicsItemChange change, const QVariant &value) {
if (change == QGraphicsItem::ItemSelectedChange){
bool newState = value.toBool();
emit selectionChanged(newState);
}
return QGraphicsItem::itemChange(change, value);
}
};
Jetzt möchte ich einen Schlitz auf das Signal verbinden, ich folgendes:
MyRectItem *i = new MyRectItem(-d, -d, d, d);
i->setPen(QPen(Qt::darkBlue));
i->setPos(150,150);
// canvas is a QGraphicsScene
canvas.addItem(i);
i->setFlags(QGraphicsItem::ItemIsSelectable | QGraphicsItem::ItemIsMovable);
QObject::connect(&canvas, SIGNAL(selectionChanged(bool)), this, SLOT(test()));
Als ich dies ausführen, wird der Kreis auf canvas
angezeigt, aber wenn ich Klicken Sie auf den Kreis nichts passiert und die Konsole zeigt Folgendes:
Object::connect: No such signal QGraphicsScene::selectionChanged(bool)
Irgendwelche Vorschläge?