QGraphicsPixmapItemから派生したカスタムクラスがあります。そのGraphPixmapItemCustomと呼ばれ、それはオーバーロードだ方法がある:QT問題で接続 - 接続していませんか?
private:
GraphPixmapItemCustom *pixItemRGB;
と呼ばれるクラスGraphPixmapItemCustomのオブジェクトへのポインタを持っているメインクラスで
signals:
void addPoint(QPointF position);
:
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);
}
}
信号がヘッダで宣言されていますメインクラスでは、私はスロットと呼ばれる:
private slots:
void pointAdd(QPointF position);
私は
qDebug("YUPPY IT ACTUALLY WORKS!");
を持っているスロットに
connect(pixItemRGB, SIGNAL(addPoint(QPointF)), this, SLOT(pointAdd(QPointF)));
しかし、スロットが発射beeingていません。 私が接続しているメインクラスのコンストラクタで
。どうして?私はすべてのmocファイルと、そこにいなくてもいたすべてを削除しました。そのため、.pro
,.h
および.cpp
ファイルと、必要な場合は.ui
という形式だけがあります。
私はGoogleでほとんどのヒットをチェックしました。最高のものは何ですか(私は麻薬ではない - おそらく私は何かを変更した)働いた!私はこの接続の作用効果を覚えています。助けて!
コンソールの「Before emit」と「After emit」は印刷されますか? 'connect'の呼び出しは' true'を返しますか? – alexisdm
QGraphicsPixmapItemに加えて、QObjectから継承することを忘れましたか? – Anthony
はい、それらが印刷され、connectがtrueを返します。 – silverado