Mam problem z moją aplikacją Qt. Próbuję emitować sygnał z innej klasy (jest to klasa zagnieżdżona z tego, w którym umieszczony jest sygnał).Jak mogę emitować sygnał z innej klasy?
Podłączyłem już sygnał do gniazda, co powinno być w porządku. Ale gdy próbuję emitować ten sygnał z wnętrza tego pod klasie pojawia się błąd kompilatora:
cannot call member function without object
Co jest nie tak? Szukałem tego w dokumentacji Qt, ale nie mogłem znaleźć rozsądnego rozwiązania, a nawet wyjaśnienia.
Uproszczona definicja klasy wygląda następująco.
class LogWriter : public QDialog
{
Q_OBJECT
public:
class Log : public QObject
{
Q_OBJECT
public:
bool print;
Log(bool _print, QString _color, QObject *obj = NULL)
: QObject(obj)
{
print = _print;
color = _color;
}
};
LogWriter(QWidget * parent = 0);
~LogWriter();
public slots:
void setMinVal();
void setMediumVal();
void setHighVal();
void cleanWindow();
void appendText(QString &text);
signals:
void signalLogAppend(QString);
};
podłączyć sygnał instancji LOW
z LogWriter w kodzie klienta do jakiejś szczeliny, stosując następujące wywołanie funkcji:
connect(&LOW, SIGNAL(signalLogAppend(QString)),
this, SLOT(appendText(QString&)),
Qt::DirectConnection);
Czy "LOW" jest właściwym typem obiektu? – tmpearce
Co to jest LOW? Brakuje jakiegoś kodu, aby uzyskać właściwą analizę. –
LOW reprezentuje klasę Log - klasa wewnętrzna, o której wspomniałem w poście – lagoru