qobject_cast
Verfasst: 11. Juli 2008 12:59
Hallo
Anfänger braucht Hilfe:
Ein object_cast liefert nur einen Nullzeiger, obwohl das zu castende Objekt eindeutig vom Typ der Zielklasse ist:
a) meine eigene Klasse, abgeleitet von QWidget:
b) als Plugin im Designer
c) ui-File erzeugt mit meinem Widget:
d) ui File mittels QUiLoader geladen:
e) Liste aller Widgets in myWidget erzeugt und Infos zu jedem Widget ausgegeben:
Ausgabe seltsamerweise wie folgt:
Anfänger braucht Hilfe:
Ein object_cast liefert nur einen Nullzeiger, obwohl das zu castende Objekt eindeutig vom Typ der Zielklasse ist:
a) meine eigene Klasse, abgeleitet von QWidget:
Code: Alles auswählen
class myBuaWidget : public QWidget
{
Q_OBJECT
...
}c) ui-File erzeugt mit meinem Widget:
Code: Alles auswählen
<widget class="myBuaWidget" name="mein Widget" >
<property name="geometry" >
<rect>
...
</widget>
Code: Alles auswählen
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QUiLoader loader;
QFile file("test.ui");
file.open(QFile::ReadOnly);
QWidget *myWidget = loader.load(&file, 0);
file.close();Code: Alles auswählen
QList<QWidget *> widgets = myWidget->findChildren<QWidget *>();
foreach(QWidget *widget, widgets) {
qDebug() << widget->objectName() << widget->metaObject()->className() << widget;
myBuaWidget *buawidget=qobject_cast<myBuaWidget *>(widget);
qDebug() << buawidget;
}
warum funktioniert der qobject_cast nicht, warum liefert er einen Nullzeiger?"mein Widget" myBuaWidget myBuaWidget(0x8105650, name = "mein Widget")
QObject(0x0)