Problem z sygnałem w QT Creator

0

Potrzebuję móc zmienić zawartość labela w konstruktorze klasy Rozgrywka.

rozgrywka.h

 
public:
    void setLabelText(QString);
signals:
    void sigSetLabelText(QString);

rozgrywka.cpp

 
void Rozgrywka::setLabelText(QString zawartosc)
{
    emit sigSetLabelText(zawartosc);
}

mainwindow.cpp:

 
    Rozgrywka *gra = new Rozgrywka();
    QObject::connect(gra,SIGNAL(sigSetLabelText(QString)),ui->label,SLOT(setText(QString)));
    gra->setLabelText("kkk");

Kompilator wyświetla taki błąd:
błąd:undefined reference to Rozgrywka::sigSetLabelText(QString)'` (linijka z enum).

0

Nie w konstruktorze tylko w funkcji

0

Czy klasa Rozgrywka dziedziczy po QObject i zawiera makro Q_OBJECT?

0

Nie miałem tego Q_OBJECT, ale dopisałem i nadal są błędy. Ten co był i jeszcze:
błąd:undefined reference to vtable for Rozgrywka'` (w rozgrywka.cpp w linijce z konstruktorem, który jest pusty)

Cały plik rozgrywka.h wygląda tak:

 
#ifndef ROZGRYWKA_H
#define ROZGRYWKA_H
#include <QObject>
using namespace std;
class Rozgrywka : public QObject
{
    Q_OBJECT
public:
    Rozgrywka();
    void setLabelText(QString);
    //jakies funkcje
signals:
    void sigSetLabelText(QString);
private:
    //jakies zmienne
};

#endif // ROZGRYWKA_H

rozgrywka.cpp

 
#include "rozgrywka.h"

Rozgrywka::Rozgrywka()
{
}

void Rozgrywka::setLabelText(QString zawartosc)
{
    emit sigSetLabelText(zawartosc);
}

0

Proszę, naprawdę nikt nie podpowie?

0

próbowałeś odpalić qmake ?

0

Nie za bardzo się na tym znam, mam oddać program na zaliczenie przedmiotu i poczytałem tylko o qt w trybie superprzyspieszonym, nie wiem czy o to chodziło

user image

0

Gdzieś pisali, że wina funkcji w klasie, że powinny być wirtualne, ale okomentowałem wszystkie funkcje, a setLabelText ustawiłem jako wirtualna i nada jest ten błąd z vtable

1

Przebuduj projekt. Qt Creator powinien samoczynnie odpalić qmake.

0

No w końcu. Dzięki wielkie :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1