Wie verwenden von SIGNAL-und SLOT-ohne Ableitung von QObject?
ODER andere Art und Weise zu formulieren, die meine Frage (obwohl es nicht mein problem lösen): 'QObject::QObject' cannot access private member declared in class 'QObject'
Brauche ich Signale und SLOTS Funktionalität in meiner Klasse, aber ich nehme an, es ist nicht möglich, ohne eine Ableitung von QObject
?
class MyClass
{
signals:
importantSignal();
public slots:
importantSlot();
};
Scheint das Problem zu sein, ich brauche die Ableitung von QObject
Signale und slots ... aber ich brauche den default contructor von MyClass
. Aber ich kann nicht konstruieren, weil Sie die folgende Funktion von QObject
:
Kein Copy-Konstruktor oder Zuweisungsoperator.
Habe viel versucht ...
Also meine Klasse soll so Aussehen:
#include <QObject>
class MyClass: public QObject
{
Q_OBJECT
public:
explicit MyClass(QObject *parent = 0); //autogenerated by qtcreator for QObject derived class
MyClass(const MyClass * other);
signals:
importantSignal();
public slots:
importantSlot();
};
Muss ich die default contructor von MyClass
.
Also gibt es irgendeine Möglichkeit vermeiden, die "'QObject::QObject' cannot access private member declared in class 'QObject'" Fehler?
Oder als alternative gibt es keine Möglichkeit, die Signale und slots ohne QObject
?
Ich bin froh für jeden Rat.
InformationsquelleAutor der Frage 6e69636b6e616d65 | 2011-09-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie möchten, eine kopierbar Objekt mit
QObject
Funktionen, die Sie brauchen-Mitgliedschaft (durch Zeiger) und nicht als inheritence.Können Sie ableiten einer Klasse
Handler
ausQObject
woHandler
's slots nennenSomeInterface
virtuelle Funktionen auf seine Eltern.InformationsquelleAutor der Antwort spraff
Wenn Sie möchten, zu implementieren event-driven-Funktionalität mittels der Signale/slots-Muster, aber nicht wollen, um die Arbeit innerhalb der Grenzen von Qt (D. H., Sie möchten mit Ihrer Klasse in der STL-Container, etc. erfordern, dass der copy-Konstruktoren), ich würde vorschlagen, mit Boost::signal.
Sonst, Nein, können Sie möglicherweise nicht, was Sie wollen, sind, ohne sich aus
QObject
da, die base-Klasse ist, was behandelt das Qt-runtime-Signale/slots-Funktionalität.InformationsquelleAutor der Antwort Jason
Können Sie nicht verwenden Qt ' s signal/slot-Mechanismen ohne Verwendung
QObject
/Q_OBJECT
.Du theoretisch könnte eine dummy-QObject und schreiben Sie Sie in Ihre Klasse. Die dummy-würden dann vorn das Ablagefach Anrufe zu Ihrer Klasse. Führen Sie wahrscheinlich in Probleme mit der Lebensdauer-management, aus den Gründen, die Liz hat, beschreibt in Ihrem Kommentar.
InformationsquelleAutor der Antwort Tom Kerr
Seit Qt5 können Sie einfach eine Verbindung zu einem beliebigen Funktion
InformationsquelleAutor der Antwort ManuelSchneid3r
In Qt5, verwenden Sie
QObject::connect
zu verbindensignal
mitslot
:Das Ergebnis:
InformationsquelleAutor der Antwort Silencer