簡體   English   中英

如何在 QGIS C++ API 中使用 QT 信號和槽

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM