Mi complemento personalizado funciona bien usando el siguiente código. En este ejemplo, el espacio de nombres no solo se usa en el complemento sino también en la clase que hereda el complemento.
cabecera para el plugin --- que podría ser utilizado en QDesigner
namespace plugin {
class MyCustomPlugin: public QObject, public QDesignerCustomWidgetInterface
{
Q_OBJECT
Q_INTERFACES(QDesignerCustomWidgetInterface)
public:
MyCustomPlugin(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 initialized;
};
}
cpp para ese plugin
Implementar la clase como de costumbre, pero los métodos siguientes debe tener en cuenta el espacio de nombres:
QString MyCustomPlugin::domXml() const
{
return "<widget class=\"plugin::MyCustomClass\" name=\"mycustomclass\">\n"
...
}
QString MyCustomPlugin::name() const
{
return "plugin::MyCustomClass";
}
QWidget *MyCustomPlugin::createWidget(QWidget *parent)
{
return new plugin::MyCustomClass(parent);
}
Q_EXPORT_PLUGIN2(mycustomplugin, plugin::MyCustomPlugin)
MyCustomClass
namespace plugin {
class QDESIGNER_WIDGET_EXPORT MyCustomClass: public MyCustomPlugin
{
Q_OBJECT
public:
MyCustomClass(QWidget * parent = 0) {}
};
}
¿Qué versión de Qt estás usando? Creo que debo estar usando una versión anterior ya que hacer lo que dijiste no funciona. –
En este momento, Qt 4.6 y Qt Creator 2.0, pero recuerdo que esto también funciona con versiones anteriores. – andref
Esto funcionó para mí en 4.7.1. Gracias. – cweston