Как использовать сигналы QT и слоты в QGIS C ++ API - PullRequest
0 голосов
/ 08 марта 2019

Я разрабатываю автономное приложение QT 5.11.2 с использованием QGIS 3.6 C ++ API.

Я определил слот, который должен принимать сигнал currentLayerChanged(QgsMapLayer * layer).

Слотобъявление в заголовочном файле:

private slots:
    void on_CurrentLayer_changed(QgsMapLayer *layer);

Определение слота:

void MainWindow::on_CurrentLayer_changed(QgsMapLayer *  layer)
{
    // do something here
}

При попытке собрать я получаю ошибку компоновщика:

moc_mainwindow.obj:-1: error: LNK2019: símbolo externo "public: static struct QMetaObject const QgsMapLayer::staticMetaObject" (?staticMetaObject@QgsMapLayer@@2UQMetaObject@@B) sin resolver al que se hace referencia en la función "int __cdecl qRegisterMetaType<class QgsMapLayer *>(char const *,class QgsMapLayer * *,enum QtPrivate::MetaTypeDefinedHelper<class QgsMapLayer *,1>::DefinedType)" (??$qRegisterMetaType@PEAVQgsMapLayer@@@@YAHPEBDPEAPEAVQgsMapLayer@@W4DefinedType@?$MetaTypeDefinedHelper@PEAVQgsMapLayer@@$00@QtPrivate@@@Z)
File not found: moc_mainwindow.obj
error: LNK1120: 1 externos sin resolver

Должен ли я подкласс каких-либо классов, которые излучают сигнал currentLayerChanged(QgsMapLayer * layer), чтобы определить слот?

...