Настройки многих плагинов зависят от настроек проекта. Часто требуется, когда пользователь qgis открывает проект, прочитать настройки плагина. Когда пользователь создал новый, сбросить эти настройки на "по умолчанию" и привести в порядок GUI введенный плагином.
Многие разработчики решают эту проблему так:
Код: Выделить всё
void QgsCopyrightLabelPlugin::initGui()
{
  ...
  //this resets this plugin up if a project is loaded
  connect( qGisInterface->mainWindow(), SIGNAL( projectRead() ), this, SLOT( projectRead() ) );
  ...
  //initialise default values in the gui
  projectRead();
}
Я решил проблему точно так же:
Код: Выделить всё
/*
 * Initialize the GUI interface for the plugin - this is only called once when the plugin is
 * added to the plugin registry in the QGIS application.
 */
void RoadGraphPlugin::initGui()
{
  ...
  connect( mQGisIface->mainWindow(), SIGNAL( projectRead() ), this, SLOT( projectRead() ) );
  connect( mQGisIface->mainWindow() , SIGNAL( newProject() ), this, SLOT( newProject() ) );
  ...
} // RoadGraphPlugin::initGui()
Проблема: замечательные сигналы projeсtRead() и newProject() недокументированы. А метод mQGisIface->mainWindow() возвращает загадочный QWidget* .
У разработчиков qgis есть причины прятать QGisApp* за QWidget*, я уверен. А хоть какое-то описание этих сигналов можно найти только в исходном коде: https://svn.osgeo.org/qgis/trunk/qgis/src/app/qgisapp.h
Предлагаю: ввести в QGisInterface соответствующие сигналы, дабы они были доступны и документированы.
Прошу: одобрить и довести до разработчиков qgis.
 
						 
  
 