Mais

Erro de construção no enum da classe QgsMapToolIentfy


Estou trabalhando em um projeto em c ++ / QT4.8.5 baseado na api c ++ 2.8.2 de QGis. É um aplicativo autônomo

Tive que obter informações de uma camada clicando sobre ela na tela

Portanto, decido usar a classe QgsMapToolIdentify (vi alguns exemplos no aplicativo de mapeamento de construção de livro com Qgis de Erik Westra)

aqui está o meu código:

mIdentify = novo QgsMapToolIdentify (mpMapCanvas); QList  lResultList; lResultList = mIdentify-> identificar (lCoord.x (), lCoord.y (), TopDownStopAtFirst, VectorLayer);

mas quando quero criá-lo, tenho um erro no valor enum TopDownStopAtFirst e VectorLayer

a mensagem de erro:

src / IHM / mainwindow.cpp: 174: 83: erro: 'VectorLayer' não foi declarado neste escopo lResultList = mIdentify-> identifique (lCoord.x (), lCoord.y (), TopDownStopAtFirst, VectorLayer);

e a mesma mensagem para o TopDownStopAtFirst

Incluí o cabeçalho qgsmaptoolidentfy.h em main.cpp.


Você deve especificar o nome da classe pai do enum ao usá-lo fora de seu escopo.

lResultList = mIdentify-> identifique (lCoord.x (), lCoord.y (), QgsMapToolIdentify :: TopDownStopAtFirst, QgsMapToolIdentify :: VectorLayer);

Mas este é realmente um problema mais geral do C ++ do que específico do GIS. Se você encontrar mais desses, pergunte em https://stackoverflow.com/.


na verdade, há outro erro aqui: o código está funcionando:

mIdentify = novo QgsMapToolIdentify (mpMapCanvas); mIdentify-> activate (); QList  lResultList; lResultList.append (mIdentify-> identifique (lCoord.x (), lCoord.y (), QgsMapToolIdentify :: TopDownStopAtFirst, QgsMapToolIdentify :: VectorLayer)); qDebug () << "identificação de tamanho Qlist =" << lResultList.size ();

o qdebug mostra o número de elementos na qlist cada vez que a função é chamada. No meu aplicativo, a função é chamada quando uma subfunção é ativada e quando eu clico com o botão esquerdo no mapa, eu tenho um resultado


Assista o vídeo: Catering dietetyczny - dlaczego nie działa?! (Outubro 2021).