Создал плагин с элементарным интерфейсом (кнопка и лейбл). В Qt-дизайнере плагин появляется, я его добавляю на форму, однако при запуске мой плагин не отображается. В то же время я кидал на ту же форму плагин из экзамплов. Он отображается.
Код моего плагина:
pro:
CONFIG += designer plugin debug_and_release
TARGET = $$qtLibraryTarget(asdasdplugin)
TEMPLATE = lib
HEADERS = asdasdplugin.h
SOURCES = asdasdplugin.cpp
RESOURCES = icons.qrc
LIBS += -L.
target.path = $$[QT_INSTALL_PLUGINS]/designer
INSTALLS += target
include(asdasd.pri)
asdasdplugin.cpp:
#include "asdasd.h"
#include "asdasdplugin.h"
#include <QtCore/QtPlugin>
AsdasdPlugin::AsdasdPlugin(QObject *parent)
: QObject(parent)
{
m_initialized = false;
}
void AsdasdPlugin::initialize(QDesignerFormEditorInterface * /* core */)
{
if (m_initialized)
return;
// Add extension registrations, etc. here
m_initialized = true;
}
bool AsdasdPlugin::isInitialized() const
{
return m_initialized;
}
QWidget *AsdasdPlugin::createWidget(QWidget *parent)
{
return new Asdasd(parent);
}
QString AsdasdPlugin::name() const
{
return QLatin1String("Asdasd");
}
QString AsdasdPlugin::group() const
{
return QLatin1String("");
}
QIcon AsdasdPlugin::icon() const
{
return QIcon();
}
QString AsdasdPlugin::toolTip() const
{
return QLatin1String("");
}
QString AsdasdPlugin::whatsThis() const
{
return QLatin1String("");
}
bool AsdasdPlugin::isContainer() const
{
return false;
}
QString AsdasdPlugin::domXml() const
{
return QLatin1String("<widget class=\"Asdasd\" name=\"asdasd\">\n</widget>\n");
}
QString AsdasdPlugin::includeFile() const
{
return QLatin1String("asdasd.h");
}
Q_EXPORT_PLUGIN2(asdasdplugin, AsdasdPlugin)
Кстати, всплывающая подсказка для него работает, когда навожу курсор в его область.