[英]How to use QT signals and slots in QGIS C++ API
我正在使用 QGIS 3.6 C++ API 開發一個獨立的 QT 5.11.2 應用程序。
我已經定義了一個插槽,用於消耗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)
任何發出信號currentLayerChanged(QgsMapLayer * layer)
來定義插槽嗎?
我有一個類似的問題。 就我而言,我只是使用另一個信號槽結構。 我的意思是而不是使用:
connect(sender,&className::signalName,receiver,slotName)
用這個:
connect(sender,SIGNAL(signalName),receiver,SLOT(slotName))
它對我有用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.