Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I am trying to utilize the C++ code examples from, specifically Tutorial 4, Adding Rasters to QGIS Map Canvas.

I am successfully able to run the example loading a GeoTIFF with QGIS 1.4, however with 1.8 I get "Layer is Not Valid". As a note, the same GeoTIFF file was able to be loaded in the QGIS 1.8 application just fine, but not in the example code. I've tried with several different files, with the same result. Is there additions to the 1.8 API which require additional calls to get this functionality to work? Problem code below. The full example code can be found at

Operating System: Fedora 17 64-bit, QGIS 1.8.0

void MainWindow::addLayer()
  QString myFileName = QFileDialog::getOpenFileName(this, tr("Open File"),
                         QCoreApplication::applicationDirPath () + "/data",
                         tr("GeoTiff (*.tif)"));
  QFileInfo myRasterFileInfo(myFileName);
  QgsRasterLayer * mypLayer = new QgsRasterLayer(myRasterFileInfo.filePath(), 
  if (mypLayer->isValid())
     qDebug("Layer is valid");
     qDebug("Layer is NOT valid");
share|improve this question

The API is the same even in master and the test cases use almost the same code. If it is a standalone app, you likely need to set up some data paths, so QGIS can find the bundled CRS info ... Try adding this somewhere at the start:

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.