Название: Интеграция виджета в 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
Наконец смог добраться до программирования.Сделал все заново как было в статье по ссылке.Все заработало.Правда ссылка выдавала не статью,а форум.Пришлось в ручную искать.За ссылочку спасибо.
|