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>