QT自定义插件/控件

插件.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);
}

猜你喜欢

转载自blog.csdn.net/qq_23400367/article/details/80898144