Custom Widgets im Designer
Verfasst: 4. Juli 2005 17:45
Hallo,
Ich möchte hier unter FreeBSD und Qt 4 ( final) ein kleines XXO Programm schreiben. Sinn des ganzen ist es, sich mit den neuen Funktionen von Qt4 vertraut zu machen. Ich habe vor ca. einem Jahr bereits mit Qt3 / C++ gearbeitet, so dass ich nicht ganz ohne Erfahrung bin.
Mein kleines XXO Programm sieht vor, dass ich ich ein CustomWidget XXOElement brauche, dass von QWidget erbt und das paintEvent überschreibt. Soweit ist das ja nichts neues gegenüber Qt3.
Neu ist, dass der designer nicht mehr in der Lage ist, Custom Widgets über eine Menuzeile einzufügen. Es scheint so zu sein, dass man nur die Möglichkeit hat, dies über Plugins zu lösen.
Das habe ich auch wie in der Dokumentation/Tutorial gemacht und in einem seperaten Projekt ein Plugin erzeugt. Im Desinger wird mir das Plugin auch unter About angezeigt. Aber mein XXOElement ist in der Auswahl nicht vorhanden.
Ich habe die Implementierung des Plugin sowie das Headerfile angehangen. Compiliert wird
das ganze über Qmake
bye und Danke für die Hilfe
Ich möchte hier unter FreeBSD und Qt 4 ( final) ein kleines XXO Programm schreiben. Sinn des ganzen ist es, sich mit den neuen Funktionen von Qt4 vertraut zu machen. Ich habe vor ca. einem Jahr bereits mit Qt3 / C++ gearbeitet, so dass ich nicht ganz ohne Erfahrung bin.
Mein kleines XXO Programm sieht vor, dass ich ich ein CustomWidget XXOElement brauche, dass von QWidget erbt und das paintEvent überschreibt. Soweit ist das ja nichts neues gegenüber Qt3.
Neu ist, dass der designer nicht mehr in der Lage ist, Custom Widgets über eine Menuzeile einzufügen. Es scheint so zu sein, dass man nur die Möglichkeit hat, dies über Plugins zu lösen.
Das habe ich auch wie in der Dokumentation/Tutorial gemacht und in einem seperaten Projekt ein Plugin erzeugt. Im Desinger wird mir das Plugin auch unter About angezeigt. Aber mein XXOElement ist in der Auswahl nicht vorhanden.
Ich habe die Implementierung des Plugin sowie das Headerfile angehangen. Compiliert wird
das ganze über Qmake
bye und Danke für die Hilfe
Code: Alles auswählen
XXOElementPlugin::XXOElementPlugin (QObject* parent) : QObject(parent)
{
initialized = false;
}
void XXOElementPlugin::initialize(QDesignerFormEditorInterface *core)
{
if (initialized)
{
return;
}
initialized=true;
}
bool XXOElementPlugin::isContainer() const
{
return false;
}
bool XXOElementPlugin::isInitialized() const
{
return initialized;
}
QIcon XXOElementPlugin::icon() const
{
return QIcon();
}
QString XXOElementPlugin::codeTemplate() const
{
return QString();
}
QString XXOElementPlugin::domXml() const
{
return QLatin1String("<widget class=\"XXOElement\" name=\"XXOElement\">\n"
" <property name=\"geometry\">\n"
" <rect>\n"
" <x>0</x>\n"
" <y>0</y>\n"
" <width>100</width>\n"
" <height>100</height>\n"
" </rect>\n"
" </property>\n"
" <property name=\"toolTip\" >\n"
" <string>the current state of the field</string>\n"
" </property>\n"
" <property name=\"whatsThis\" >\n"
" <string>a custom element for an XXO application</string>\n"
" </property>\n"
"</widget>\n");
}
QString XXOElementPlugin::group() const
{
QLatin1String s("XXO App");
return s;
}
QString XXOElementPlugin::includeFile() const
{
QLatin1String s("XXOElement.h");
return s;
}
QString XXOElementPlugin::name() const
{
QString s("XXOElement");
return s;
}
QString XXOElementPlugin::toolTip() const
{
return QString();
}
QString XXOElementPlugin::whatsThis() const
{
return QString();
}
QWidget* XXOElementPlugin::createWidget(QWidget *parent)
{
XXOElement* xxoElement = new XXOElement(parent);
return xxoElement;
}
Q_EXPORT_PLUGIN(XXOElement)
Code: Alles auswählen
class XXOElementPlugin : public QObject, public QDesignerCustomWidgetInterface
{
Q_OBJECT
Q_INTERFACES(QDesignerCustomWidgetInterface)
public:
XXOElementPlugin (QObject* parent=0);
bool isContainer() const;
bool isInitialized() const;
QIcon icon() const;
QString codeTemplate() 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;
};