0

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 でほとんどのヒットを確認しました。それが機能した最高のものは何ですか(私にはわかりません-おそらく何かを変更しました)!この接続の効果を覚えています。ヘルプ!

4

1 に答える 1

1

You have to connect the signal after creating the GraphPixmapItemCustom object with the new operator.

于 2012-04-23T20:51:05.557 に答える