Конфигурация сигнала/слота Qt

У меня проблема с сигналом/слотами в Qt 5.6.0

Когда я пытаюсь скомпилировать, я получаю следующую ошибку: я погуглил и обнаружил, что когда я использую qmake (я считаю, что это именно тот случай), мне нужно сделать несколько трюков с moc, однако, как новичок Qt, я не нашел соответствующее решение.

Вывод ошибки:

loadtexview.obj:-1: error: LNK2019: unresolved external symbol "public: void __cdecl LoadTexView::TexSend(class QPixmap)" (?TexSend@LoadTexView@@QEAAXVQPixmap@@@Z) referenced in function "public: virtual void __cdecl LoadTexView::paintGL(void)" (?paintGL@LoadTexView@@UEAAXXZ)

загрузитьtexview.h:

#ifndef LOADTEXVIEW_H
#define LOADTEXVIEW_H

#include <QtOpenGL/QtOpenGL>


class LoadTexView : public QGLWidget
{
public:
    LoadTexView(QWidget *parent = 0);
    void paintGL();
signals:
    void TexSend(QPixmap sending);
};

#endif // LOADTEXVIEW_H

loadtex.cpp

...
void LoadTexView::paintGL()
{
    int w1 = width();
    int h1 = height();
    int w2,h2;
    float r1 = (float) w1 / (float) h1;
    float r2 = 1;

    w2 = w1;
    h2 = (float) w2 / r2;

    if(h2 > h1)
    {
        h2 = h1;
        w2 = (float) h2 * r2;
    }

    QPixmap tex = QPixmap("C:\\Users\\Gabor\\OneDrive\\Documents\\TexGen\\TexGen\\road.bmp");
    emit TexSend(tex);
...

подключение сигнала и слота в mainwindow.cpp:

myLoadView = new LoadTexView();
myGenView = new GenTexView();
QHBoxLayout *TWrapper = new QHBoxLayout;
TWrapper -> addWidget(myLoadView);
ui->LoadedTexture->setLayout(TWrapper);

QObject::connect(myLoadView, SIGNAL(TexSend(QPixmap)),
                 myGenView,      SLOT(gotTexture(QPixmap)));

У кого-нибудь есть идея, как мне это решить? Я считаю, что это просто конфигурация moc, однако я понятия не имею, как ее решить. Все остальное мне кажется нормально.


person Bachey    schedule 06.05.2016    source источник
comment
Вам не хватает макроса Q_OBJECT в объявлении LoadTexView.   -  person Frank Osterfeld    schedule 06.05.2016
comment
Да, вы правы, спасибо все исправили!   -  person Bachey    schedule 07.05.2016