插件.pro文件配置:
CONFIG += plugin debug_and_release
TARGET = $$qtLibraryTarget(qimagebuttonplugin)
TEMPLATE = lib
HEADERS = qimagebuttonplugin.h
SOURCES = qimagebuttonplugin.cpp
RESOURCES = icons.qrc
LIBS += -L.
greaterThan(QT_MAJOR_VERSION, 4) {
QT += designer
} else {
CONFIG += designer
}
target.path = $$[QT_INSTALL_PLUGINS]/designer
INSTALLS += target
include(qimagebutton.pri)
插件头文件:
qimagebuttonplugin.h
#ifndef QIMAGEBUTTONPLUGIN_H
#define QIMAGEBUTTONPLUGIN_H
#include <QDesignerCustomWidgetInterface>
class QImageButtonPlugin : public QObject, public QDesignerCustomWidgetInterface
{
Q_OBJECT
Q_INTERFACES(QDesignerCustomWidgetInterface)
#if QT_VERSION >= 0x050000
Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QDesignerCustomWidgetInterface")
#endif // QT_VERSION >= 0x050000
public:
QImageButtonPlugin(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
创建新控件窗口:
QWidget *QImageButtonPlugin::createWidget(QWidget *parent)
{
return new QImageButton(parent);
}
控件窗口类:(头文件)
class QImageButton : public QWidget
{
Q_OBJECT
Q_PROPERTY(QPixmap normalImage READ normalImage WRITE setNormalImage)
Q_PROPERTY(QPixmap pressImage READ pressImage WRITE setPressImage)
Q_PROPERTY(QPixmap focusImage READ focusImage WRITE setFocusImage)
Q_PROPERTY(QPixmap disableImage READ disableImage WRITE setDisableImage)
Q_PROPERTY(QString buttonName READ buttonName WRITE setButtonName)
Q_PROPERTY(QString displayText READ displayText WRITE setDisplayText)
Q_PROPERTY(int textFormat READ textFormat WRITE setTextFormat)
Q_PROPERTY(int timerInterval READ timerInterval WRITE setTimerInterval)
Q_PROPERTY(bool focusState READ focusState WRITE setFocusState)
Q_PROPERTY(bool disableState READ disableState WRITE setDisableState)
Q_PROPERTY(bool supportLongPress READ supportLongPress WRITE setSupportLongPress)
Q_PROPERTY(QColor normalTextColor READ normalTextColor WRITE setNormalTextColor)
Q_PROPERTY(QColor pressTextColor READ pressTextColor WRITE setPressTextColor)
//Q_PROPERTY(QColor focusTextColor READ focusTextColor WRITE setFocusTextColor)
Q_PROPERTY(QColor disableTextColor READ disableTextColor WRITE setDisableTextColor)
public:
QImageButton(QWidget *parent = 0);
~QImageButton();
public:
/*set normal image*/
const QPixmap normalImage() const;
void setNormalImage(const QPixmap &pix);
/*set High light image*/
const QPixmap pressImage() const;
void setPressImage(const QPixmap &pix);
/*set focus image*/
const QPixmap focusImage() const;
void setFocusImage(const QPixmap &pix);
/*set disable image*/
const QPixmap disableImage() const;
void setDisableImage(const QPixmap &pix);
/*set button down*/
bool isDown() const;
void setIsDown(bool temp);
/* set button name*/
const QString buttonName() const;
void setButtonName(const QString &data);
/*set button focus state*/
bool focusState() const;
void setFocusState(const bool &data);
/*set button disable state*/
bool disableState() const;
void setDisableState(const bool &data);
/*set display string*/
const QString displayText() const;
void setDisplayText(const QString &data);
/*set text format*/
const int textFormat() const;
void setTextFormat(int nFormat);
/*set text normal color*/
const QColor normalTextColor() const;
void setNormalTextColor(const QColor &data);
/*set text press color*/
const QColor pressTextColor() const;
void setPressTextColor(const QColor &data);
protected:
void paintEvent(QPaintEvent *event);
void mousePressEvent(QMouseEvent *event);
void mouseMoveEvent(QMouseEvent *event);
void mouseReleaseEvent(QMouseEvent *event);
}