This is my code
speedDial.pro
CONFIG += designer \
plugin \
debug_and_release
TARGET = $$qtLibraryTarget(speeddialplugin)
TEMPLATE = lib
HEADERS = speeddialplugin.h
SOURCES = speeddialplugin.cpp
RESOURCES = icons.qrc
LIBS += -L.
target.path = $$[QT_INSTALL_PLUGINS]/designer
INSTALLS += target
include(svgdialgauge/svgdialgauge.pri)
include(common/common.pri)
FORMS += form.ui
speedDialPlugin.h
#ifndef SPEEDDIALPLUGIN_H
#define SPEEDDIALPLUGIN_H
#include <QDesignerCustomWidgetInterface>
class speedDialPlugin : public QObject, public QDesignerCustomWidgetInterface
{
Q_OBJECT
Q_INTERFACES(QDesignerCustomWidgetInterface)
public:
speedDialPlugin(QObject *parent = 0);
bool isContainer() const;
bool isInitialized() const;
QIcon icon() const;
QString domXml() const;
QString group() const;
QString includeFile() const;
QString name() const;
QString toolTip() const;
QString whatsThis() const;
QWidget *createWidget(QWidget *parent);
void initialize(QDesignerFormEditorInterface *core);
private:
bool m_initialized;
};
#endif
speedDialPlugin.cpp
#include <QtCore/QtPlugin>
#include "speeddialplugin.h"
#include "qtsvgdialgauge.h"
speedDialPlugin::speedDialPlugin(QObject *parent)
: QObject(parent)
{
m_initialized = false;
}
void speedDialPlugin::initialize(QDesignerFormEditorInterface * /* core */)
{
if (m_initialized)
return;
// Add extension registrations, etc. here
m_initialized = true;
}
bool speedDialPlugin::isInitialized() const
{
return m_initialized;
}
QWidget *speedDialPlugin::createWidget(QWidget *parent)
{
QtSvgDialGauge * gauge = new QtSvgDialGauge(parent);
gauge->setSkin("Tachometer");
gauge->setMinimum(0);
gauge->setMaximum(60);
gauge->setValue(0);
return gauge;
}
QString speedDialPlugin::name() const
{
return QLatin1String("speedDial");
}
QString speedDialPlugin::group() const
{
return QLatin1String("");
}
QIcon speedDialPlugin::icon() const
{
return QIcon();
}
QString speedDialPlugin::toolTip() const
{
return QLatin1String("");
}
QString speedDialPlugin::whatsThis() const
{
return QLatin1String("");
}
bool speedDialPlugin::isContainer() const
{
return false;
}
QString speedDialPlugin::domXml() const
{
//return QLatin1String("<widget class=\"speedDial\" name=\"speedDial\">\n</widget>\n");
return "<ui language=\"c++\">\n"
" <widget class=\"speedDial\" name=\"speedDial\">\n"
" <property name=\"geometry\">\n"
" <rect>\n"
" <x>0</x>\n"
" <y>0</y>\n"
" <width>100</width>\n"
" <height>100</height>\n"
" </rect>\n"
" </property>\n"
" </widget>\n"
"</ui>";
}
QString speedDialPlugin::includeFile() const
{
return QLatin1String("qtsvgdialgauge.h");
}
Q_EXPORT_PLUGIN2(speeddialplugin, speedDialPlugin)
qtSvgDialGauge.h
/*
Embedded Widgets Demo
Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).*
Contact: Qt Software Information (qt-info@nokia.com)**
This file may be used under the terms of the Embedded Widgets Demo License
Agreement.
*/
#ifndef QT_SVG_DIAL_GAUGE
#define QT_SVG_DIAL_GAUGE
#include <QtGui/QWidget>
#include <QtCore/QPair>
#include <QtDesigner/QDesignerExportWidget>
class QSvgRenderer;
class QtSvgPixmapCache;
class QDESIGNER_WIDGET_EXPORT QtSvgDialGauge : public QWidget
{
Q_OBJECT
Q_PROPERTY(QString skin READ skin WRITE setSkin)
Q_PROPERTY(int minimum READ minimum WRITE setMinimum)
Q_PROPERTY(int maximum READ maximum WRITE setMaximum)
Q_PROPERTY(qreal startAngle READ startAngle WRITE setStartAngle)
Q_PROPERTY(qreal endAngle READ endAngle WRITE setEndAngle)
public:
explicit QtSvgDialGauge(QWidget * parent = 0);
~QtSvgDialGauge();
void setSkin(const QString& skin);
QString skin() const;
void setMinimum(int minimum);
void setMaximum(int maximum);
void setNeedleOrigin(qreal x, qreal y);
void setStartAngle(qreal angle);
void setEndAngle(qreal angle);
int value() const;
int minimum() const;
int maximum() const;
qreal needleOriginX() const;
qreal needleOriginY() const;
qreal startAngle() const;
qreal endAngle() const;
virtual QSize minimumSizeHint() const;
virtual QSize sizeHint() const;
void setShowOverlay(bool);
public slots:
void setValue(int value);
private:
void init();
QRectF availableRect(QtSvgPixmapCache * renderObject) const;
QtSvgPixmapCache* m_backgroundRenderer;
QtSvgPixmapCache* m_needleShadowRenderer;
QSvgRenderer* m_needleRenderer;
QRectF availableRect(QSvgRenderer * renderObject) const;
QtSvgPixmapCache* m_overlayRenderer;
/** minimum possible value **/
int m_minimum;
/** maximum possible value **/
int m_maximum;
/** actual value **/
int m_value;
/** smallest start angle **/
qreal m_startAngle;
/** highest end angle **/
qreal m_endAngle;
/** position x of needle **/
qreal m_originX;
/** position y of needle **/
qreal m_originY;
bool m_showOverlay;
/** name of actual skin **/
QString m_skin;
protected:
void paintEvent(QPaintEvent * event);
};
#endif // QT_SVG_DIAL_GAUGE
Bookmarks