Hi All,<br>I am new to QGIS.I am writing a plugin to simply draw a simple stuff in mapCanvas in ubuntu linux.<br>I already created a plugin toolButton .I want to draw a triangle or rectangle when my pluging will be selected.<br>
I followed following process.<br>1)create a toolBarIcon in initGui()<br>2)took a slot to render the drawig stuffs.<br>3)inside that slot i called Qpainter to paint something.<br>4)connect that slot inside initGui() to mapCanvas.<br>
<br>5)I am loading lib libraries into plugin folder(/usr/lib/qgis)<br><br>#include "qgspointconverterplugin.h"<br><br>#ifdef WIN32<br>#define QGISEXTERN extern "C" __declspec( dllexport )<br>#else<br>#define QGISEXTERN extern "C"<br>
#endif<br>QgsPointConverterPlugin::QgsPointConverterPlugin(QgisInterface* iface): mIface(iface), qGisInterface( iface)<br>{<br>}<br>QgsPointConverterPlugin::~QgsPointConverterPlugin()<br>{<br>}<br>void QgsPointConverterPlugin::initGui()<br>
{<br>  // myQActionPointer = new QAction( QIcon( ":/scale_bar.png" ), tr( "&Scale Bar" ), this );<br>  mAction = new QAction(tr("&Convert to point"), this);<br>  connect(mAction, SIGNAL(activated()), this, SLOT( run() ) );<br>
  connect( qGisInterface->mapCanvas(), SIGNAL( renderComplete( QPainter * ) ), this, SLOT( render(QPainter * )) );  <br>  <br>  mIface->addToolBarIcon(mAction);<br>  mIface->addPluginToMenu(tr("&Convert to point"), mAction);<br>
}<br>void QgsPointConverterPlugin::unload()<br>{<br>  mIface->removeToolBarIcon(mAction);<br>  mIface->removePluginMenu(tr("&Convert to point"), mAction);<br>  delete mAction;<br>}<br>void QgsPointConverterPlugin::refreshCanvas()<br>
{<br>  qGisInterface->mapCanvas()->refresh();<br>}<br>void QgsPointConverterPlugin::run()<br>{<br>  /*QgsScaleBarPluginGui *myPluginGui = new QgsScaleBarPluginGui( qGisInterface->mainWindow(), QgisGui::ModalDialogFlags );<br>
  myPluginGui->setAttribute( Qt::WA_DeleteOnClose );<br>  myPluginGui->setPreferredSize( mPreferredSize );<br>  myPluginGui->setSnapping( mSnapping );<br>  myPluginGui->setPlacementLabels( mPlacementLabels );<br>
  myPluginGui->setPlacement( mPlacementIndex );<br>  myPluginGui->setEnabled( mEnabled );<br>  myPluginGui->setStyleLabels( mStyleLabels );<br>  myPluginGui->setStyle( mStyleIndex );<br>  myPluginGui->setColour( mColour );*/<br>
<br>  /*connect( myPluginGui, SIGNAL( changePreferredSize( int ) ), this, SLOT( setPreferredSize( int ) ) );<br>  connect( myPluginGui, SIGNAL( changeSnapping( bool ) ), this, SLOT( setSnapping( bool ) ) );<br>  connect( myPluginGui, SIGNAL( changePlacement( int ) ), this, SLOT( setPlacement( int ) ) );<br>
  connect( myPluginGui, SIGNAL( changeEnabled( bool ) ), this, SLOT( setEnabled( bool ) ) );<br>  connect( myPluginGui, SIGNAL( changeStyle( int ) ), this, SLOT( setStyle( int ) ) );<br>  connect( myPluginGui, SIGNAL( changeColour( QColor ) ), this, SLOT( setColour( QColor ) ) );<br>
  connect( myPluginGui, SIGNAL( refreshCanvas() ), this, SLOT( refreshCanvas() ) );<br>  myPluginGui->show();*/<br>}<br>void QgsPointConverterPlugin::render(QPainter *painter)//<br>{<br>  <br>  qWarning("in method convertToPoint");<br>
  QPen myForegroundPen( mColour, 2 );<br>  QPen myBackgroundPen( Qt::white, 4 );<br>  QPolygon polygon( 4 );<br>  painter->setPen( myBackgroundPen );<br>  polygon.putPoints( 0, 4,10,20,30,40,50,60);                                         <br>
  painter->drawPolyline( polygon );<br>  //QPainter *painter;<br>/*  QPainter paint( this );<br>  paint.setPen( Qt::blue );<br>  paint.drawRect(20,30,40,45 );*/<br><br>  /*QPolygon pa( 4 );<br>  pa.setPoint( 0, 10, 10 );<br>
  pa.setPoint( 1, 20, 10);<br>  pa.setPoint( 2, 20, 20 );<br>  pa.setPoint( 3, 10,20 );<br>  painter->drawPolygon( pa );*/<br>}<br><br>QGISEXTERN QgisPlugin* classFactory(QgisInterface* iface)<br>{<br>  return new QgsPointConverterPlugin(iface);<br>
}<br><br>QGISEXTERN QString name()<br>{<br>  return "point converter plugin";<br>}<br>QGISEXTERN QString description()<br>{<br>  return "A plugin that converts vector layers to delimited text point files";<br>
}<br>QGISEXTERN QString version()<br>{<br>  return "0.00001";<br>}<br><br><br>// Return the type (either UI or MapLayer plugin)<br>QGISEXTERN int type()<br>{<br>  return QgisPlugin::UI;<br>}<br>// Delete ourself<br>
QGISEXTERN void unload(QgisPlugin* theQgsPointConverterPluginPointer)<br>{<br>  <br>  //disconnect( qGisInterface->mapCanvas(), SIGNAL( renderComplete( QPainter * ) ),<br>              //this, SLOT( renderScaleBar( QPainter * ) ) );<br>
 // refreshCanvas();<br><br>  //delete myQActionPointer;<br>  delete theQgsPointConverterPluginPointer;<br>}<br><br clear="all">But it's not drawing anything,rather application crashes when i load my plugin.<br>can any one plz help me out.<br>
-- <br>Thanks & Regards <br>Bijay <br>