• 9883阅读
  • 10回复

求助自定义QT插件问题 [复制链接]

上一主题 下一主题
离线m1352
 
只看楼主 倒序阅读 楼主  发表于: 2009-04-08
在学习自定义QT窗口部件的时候,编译程序成功生成了【iconeditorplugin.dll】和【libiconeditorplugin.a】文件到 $(QTDIR)/plugins/designer
可是在QT设计师里 没有出现自定义的插件【IconEditor】 为何呢 是书附带的源代码
重启QT也不出现自己的插件 难道还要别的方法导入吗?请帮忙~~

主要部分文件如下:

【iconeditorplugin.h】
#include <QColor>
#include <QImage>
#include <QWidget>

class IconEditor : public QWidget
{
    Q_OBJECT
    Q_PROPERTY(QColor penColor READ penColor WRITE setPenColor)
    Q_PROPERTY(QImage iconImage READ iconImage WRITE setIconImage)
    Q_PROPERTY(int zoomFactor READ zoomFactor WRITE setZoomFactor)

public:
    IconEditor(QWidget *parent = 0);

    void setPenColor(const QColor &newColor);
    QColor penColor() const { return curColor; }
    void setZoomFactor(int newZoom);
    int zoomFactor() const { return zoom; }
    void setIconImage(const QImage &newImage);
    QImage iconImage() const { return image; }
    QSize sizeHint() const;

protected:
    void mousePressEvent(QMouseEvent *event);
    void mouseMoveEvent(QMouseEvent *event);
    void paintEvent(QPaintEvent *event);

private:
    void setImagePixel(const QPoint &pos, bool opaque);
    QRect pixelRect(int i, int j) const;

    QColor curColor;
    QImage image;
    int zoom;
};

【iconeditorplugin.cpp】
#include <QtPlugin>

#include "../iconeditor/iconeditor.h"
#include "iconeditorplugin.h"

IconEditorPlugin::IconEditorPlugin(QObject *parent)
    : QObject(parent)
{
}

QString IconEditorPlugin::name() const
{
    return "IconEditor";
}

QString IconEditorPlugin::includeFile() const
{
    return "iconeditor.h";
}

QString IconEditorPlugin::group() const
{
    return tr("Image Manipulation Widgets");
}

QIcon IconEditorPlugin::icon() const
{
    return QIcon(":/images/iconeditor.png");
}

QString IconEditorPlugin::toolTip() const
{
    return tr("An icon editor widget");
}

QString IconEditorPlugin::whatsThis() const
{
    return tr("This widget is presented in Chapter 5 of <i>C++ GUI "
              "Programming with Qt 4</i> as an example of a custom Qt "
              "widget.");
}

bool IconEditorPlugin::isContainer() const
{
    return false;
}

QWidget *IconEditorPlugin::createWidget(QWidget *parent)
{
    return new IconEditor(parent);
}

Q_EXPORT_PLUGIN2(iconeditorplugin, IconEditorPlugin)

【iconeditorplugin.pro】
TEMPLATE = lib
CONFIG += designer \
    plugin \
    release
HEADERS = ../iconeditor/iconeditor.h \
    iconeditorplugin.h
SOURCES = ../iconeditor/iconeditor.cpp \
    iconeditorplugin.cpp
RESOURCES = iconeditorplugin.qrc
DESTDIR = $(QTDIR)/plugins/designer
FORMS +=

离线m1352
只看该作者 1楼 发表于: 2009-04-08
上面文件代码发错了
【iconeditorplugin.h】
#ifndef ICONEDITORPLUGIN_H
#define ICONEDITORPLUGIN_H

#include <QDesignerCustomWidgetInterface>

class IconEditorPlugin : public QObject,
                         public QDesignerCustomWidgetInterface
{
    Q_OBJECT
    Q_INTERFACES(QDesignerCustomWidgetInterface)

public:
    IconEditorPlugin(QObject *parent = 0);

    QString name() const;
    QString includeFile() const;
    QString group() const;
    QIcon icon() const;
    QString toolTip() const;
    QString whatsThis() const;
    bool isContainer() const;
    QWidget *createWidget(QWidget *parent);
};

#endif
离线yleesun

只看该作者 2楼 发表于: 2009-04-08
把生成的DLL要拷贝到designer的相关目录下,才可以识别
离线m1352
只看该作者 3楼 发表于: 2009-04-09
已经生成dll到 $(QTDIR)/plugins/designer了  看了 是有的 $(QTDIR是QT的路径
可是还是不出现在QT里……不知道为什么
离线m1352
只看该作者 4楼 发表于: 2009-04-09
我把代码传上来了  谁能帮我看看  生成了dll  也放在了$(QTDIR)/plugins/designer下面
可是在qt里就是不出自己做的插件
iconeditorplugin文件夹就是插件的工程
附件: chap05.rar (8 K) 下载次数:16
离线sunnydream
只看该作者 5楼 发表于: 2009-05-07
我也碰到同样的问题,有人知道怎么解决这个问题吗
离线wangpeng110m
只看该作者 6楼 发表于: 2009-07-10
kankan
离线浪漫天使
只看该作者 7楼 发表于: 2009-07-10



没有啊 ,我一编译打开designer就看到了,你自己看图
离线interlc

只看该作者 8楼 发表于: 2009-08-11
引用楼主m1352于2009-04-08 17:15发表的 求助自定义QT插件问题 :
在学习自定义QT窗口部件的时候,编译程序成功生成了【iconeditorplugin.dll】和【libiconeditorplugin.a】文件到 $(QTDIR)/plugins/designer
可是在QT设计师里 没有出现自定义的插件【IconEditor】 为何呢 是书附带的源代码
重启QT也不出现自己的插件 难道还要别的方法导入吗?请帮忙~~
主要部分文件如下:
.......


我也遇到同样的问题啊,怎么解决啊,还请高人赐教
离线fieldfarmer
只看该作者 9楼 发表于: 2009-09-16
考虑一下你对插件进行编译时, 是不是Release模式? QT Designer不接受Debug模式的DLL作插件啊.
离线yxhappy
只看该作者 10楼 发表于: 2009-11-03
我也在学习qt的自定义插件,但我编译不了,请问楼主,你的【iconeditorplugin.dll】和【libiconeditorplugin.a】是怎么得到的呀?能给个步骤吗?
快速回复
限100 字节
 
上一个 下一个