Ich habe ein Widget, das von QGraphicsView inherhits etwa so:Der beste Weg, um ein Signal von QGraphicsItem seiner QGraphicView Verbindungs
class MyWidget : public QGraphicsView
{
Q_OBJECT
public:
MyWidget(QWidget *parent);
...
signal:
mySignal();
}
Diese QGraphicsView eine Szene hat und die Szene hinzugefügt (custom) Elemente, die von QGraphicsObject erben so dass das Signal/Slots sind implementiert:
class CustomItem : public QGraphicsObject
{
Q_OBJECT
public:
CustomItem();
QVariant itemChange(GraphicsItemChange change, const QVariant &value);
void focusInEvent(QFocusEvent *event);
void focusOutEvent(QFocusEvent *event);
...
signal:
void itemSignal();
}
Wenn das Element im Fokus ist ich mywidget der mySignal verbinden möchten, etwa so:
void CustomItem::focusInEvent(QFocusEvent *event)
{
connect(this, SIGNAL(itemSignal()), ???,SIGNAL(mySignal()));
}
Wie Sie sehen können, habe ich den Zeiger auf MyWidget mit Fragezeichen ausgefüllt, weil ich nicht sicher bin, was der beste Weg, um einen Zeiger darauf zu bekommen ist. Ich habe versucht, durch die Dokumentation zu gehen, um zu sehen, ob das Element irgendeine Methode oder ähnliches erbt, um seine QGraphicsView zu bekommen, aber ich konnte nichts finden. Übergibt MyWidget diesen Zeiger auf den Konstruktor des CustomItem und speichert es eine gute Methode?
Vielen Dank im Voraus :)
Sie verkomplizieren die Dinge. Wahrscheinlich erstellen Sie diese 'CustomItem's in einer Klasse, die die Instanz von' MyWidget' enthält. Verbinden Sie das "CustomItem :: itemSignal" mit "MyWidget :: mySignal" dort. Wenn dasselbe Signal mehrmals angeschlossen wird, wird es mehrmals ausgelöst. – thuga
Welche Qt-Version wird verwendet? Könntest du bereits die Funktion Pointer-basierte Verbindungssemantik verwenden? Ihre Version basiert auf dem veralteten String-Base Signal-Slot-Konzept und sollte nicht mehr verwendet werden. – KimKulling
Was sind die technischen Aspekte, was ist das Ziel? Wenn Sie sich auf eine QGraphicsObject-basierte Instanz konzentrieren, was planen Sie in QGraphicsView? – TheDarkKnight