您的位置:首页 > 编程语言 > Qt开发

子Qt设计师中集成自定义窗口部件

2013-01-12 12:37 330 查看
改进法(promotion):

  通过选择一个类似的内置的Qt窗口部件

插件法(plugin):

iconeditorplugin.h

#ifndef ICONEDITORPLUGIN_H
#define ICONEDITORPLUGIN_H

#include <QDesignerCustomWidgetInterface>

class IconEditorPlugin : public QObject,
public QDesignerCustomWidgetInterface
{
Q_OBJECT
Q_INTERFACES(QDesignerCustomWidgetInterface)   //使用Q_INTERFACES()宏通知moc:: 这里的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


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)  //必须的,使Qt设计师中能够使用这个插件,第一参数是希望给插件的名字,第二个参数是实现该插件类的名字


iconeditorplugin.pro

TEMPLATE      = lib
CONFIG       += designer plugin release
HEADERS       = ../iconeditor/iconeditor.h \
iconeditorplugin.h
SOURCES       = ../iconeditor/iconeditor.cpp \
iconeditorplugin.cpp
RESOURCES     = iconeditorplugin.qrc
DESTDIR       = $$[QT_INSTALL_PLUGINS]/designer  //QT_INSTALL_PLUGINS保存了指向Qt安装目录种plugins目录所在的路径
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: