Qtのクリックを処理する際に問題が発生しました。私は、次のクラスがあります。私はこれを実行するとQtオブジェクト信号がメソッド(ハンドラー)に接続されていません
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()));
、円がcanvas
に表示されますが、ときに私:
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);
}
};
は今、私は信号にスロットを接続したいが、私は次のようにします円をクリックしても何も起こらず、コンソールには次のように表示されます:
Object::connect: No such signal QGraphicsScene::selectionChanged(bool)
何か提案がありますか?