Russian Qt Forum

Qt => Qt-инструментарий => Тема начата: time.h от Март 13, 2011, 14:47



Название: Интеграция виджета в QtDesiner
Отправлено: time.h от Март 13, 2011, 14:47
Здравствуйте.Возникла следующая проблема.
Написал простенький виджет,захотелось вставить его в Designer.
Описал подкласс QDesignerCustomWidgetInterface.Сложил все файлы в одну папку.Скомпилировалось все без ошибок,но виджет в дизайнере так и не появился.
Помогите пожалуйста.
*.pro-файл
Код:
TEMPLATE =lib
CONFIG             += designer plugin release
HEADERS           +=mybutton.h mybuttonplugin.h
SOURCES           +=mybutton.cpp mybuttonplugin.cpp
DESTDIR            =$(QTDIR)/plugins/designer

заголовочный файл подкласса QDesignerCustomWidgetInterface
Код:
#ifndef MYBUTTONPLUGIN_H
#define MYBUTTONPLUGIN_H

#include <QDesignerCustomWidgetInterface>

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

public:
    MyButtonPlugin(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

Исходный код подкласса QDesignerCustomWidgetInterface
Код:
#include "mybutton.h"
#include "mybuttonplugin.h"
#include <QtCore/QtPlugin>

MyButtonPlugin::MyButtonPlugin(QObject *parent)
    : QObject(parent)
{
    m_initialized = false;
}

void MyButtonPlugin::initialize(QDesignerFormEditorInterface * /* core */)
{
    if (m_initialized)
        return;

    // Add extension registrations, etc. here

    m_initialized = true;
}

bool MyButtonPlugin::isInitialized() const
{
    return m_initialized;
}

QWidget *MyButtonPlugin::createWidget(QWidget *parent)
{
    return new MyButton(parent);
}

QString MyButtonPlugin::name() const
{
    return QLatin1String("MyButton");
}

QString MyButtonPlugin::group() const
{
    return QLatin1String("dfds");
}

QIcon MyButtonPlugin::icon() const
{
    return QIcon();
}

QString MyButtonPlugin::toolTip() const
{
    return QLatin1String("");
}

QString MyButtonPlugin::whatsThis() const
{
    return QLatin1String("");
}

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

QString MyButtonPlugin::domXml() const
{
    return QLatin1String("<widget class=\"MyButton\" name=\"myButton\">\n</widget>\n");
}

QString MyButtonPlugin::includeFile() const
{
    return QLatin1String("mybutton.h");
}

Q_EXPORT_PLUGIN2(mybuttonplugin, MyButtonPlugin)


Название: Re: Интеграция виджета в QtDesiner
Отправлено: Авварон от Март 14, 2011, 08:08
куда вставляешь, в креатор или внешний дизайнер? Чем собирал? Код правда не смотрел, мб и там ошибка:)


Название: Re: Интеграция виджета в QtDesiner
Отправлено: ecspertiza от Март 14, 2011, 09:01
Разработка плагинов QtDesigner (http://forum.try-catch.ru/topic_294_0.html)


Название: Re: Интеграция виджета в QtDesiner
Отправлено: serg_hd от Март 14, 2011, 22:00
Разработка плагинов QtDesigner (http://forum.try-catch.ru/topic_294_0.html)
а по ссылочке ходить пробовал?


Название: Re: Интеграция виджета в QtDesiner
Отправлено: ecspertiza от Март 14, 2011, 22:52
блин как не вставлю ссылку, хоть в теги хоть без форум ее постоянно меняет :) толк тогда от тега url ?


Название: Re: Интеграция виджета в QtDesiner
Отправлено: serg_hd от Март 14, 2011, 23:05
админ пока молчит (http://www.prog.org.ru/topic_16841_0.html)


Название: Re: Интеграция виджета в QtDesiner
Отправлено: time.h от Март 15, 2011, 20:48
Наконец смог добраться до программирования.Сделал все заново как было в статье по ссылке.Все заработало.Правда ссылка выдавала не статью,а форум.Пришлось в ручную искать.За ссылочку спасибо.