object creation event ?
object creation event ?
Hi,
Can someone tell me if there is a signal or an event which is sended when an object is created in the application ?
Because I want my main class to be alerted when a new object / widget is created or shown on the screen
thks
Can someone tell me if there is a signal or an event which is sended when an object is created in the application ?
Because I want my main class to be alerted when a new object / widget is created or shown on the screen
thks
Danke aber ich bin französisch und ich sprache nicht gut deutsch...
Und niemand hat meine frage geantworten in US oder FR forums...
Ich will erproben...
Haben Sie eine Idea für meine Probleme :
Ich habe eine method in eine librairy (was ich habe programmiert) und ich will, für jedes QWidget was ist instanziert in meine applikation, dieses method zu applizieren.
Aber ich will, dass der Appell an meine method automatisch sein wann eine neue QWidget instanziert ist...
Ich hoffe Sie verstehen mich...
Danke schön !
Und niemand hat meine frage geantworten in US oder FR forums...
Ich will erproben...
Haben Sie eine Idea für meine Probleme :
Ich habe eine method in eine librairy (was ich habe programmiert) und ich will, für jedes QWidget was ist instanziert in meine applikation, dieses method zu applizieren.
Aber ich will, dass der Appell an meine method automatisch sein wann eine neue QWidget instanziert ist...
Ich hoffe Sie verstehen mich...
Danke schön !
deutsch
Ok, ich habs mir nochmal genauer angeschaut. Es gibt da
Du könntest versuchen mithilfe von oder diese Events abzufangen. Ob es allerdings funktioniert habe ich nicht versucht. Alternativ wäre noch die Möglichkeit, da es sich ja anscheinend um QWidget's zu handeln scheint, das showEvent abzufangen.
english
Ok, I have looked at it again. There are
You could try to catch this events with or But I haven't tested this till yet. Another possibility would be to catch the showEvent's if the objects all QWidgets.
Ok, ich habs mir nochmal genauer angeschaut. Es gibt da
Code: Alles auswählen
QEvent::ChildAdded
QEvent::ChildRemovedCode: Alles auswählen
QWidget::event(QEvent *)Code: Alles auswählen
void QObject::installEventFilter (QObject *filterObj)english
Ok, I have looked at it again. There are
Code: Alles auswählen
QEvent::ChildAdded
QEvent::ChildRemovedCode: Alles auswählen
QWidget::event(QEvent *)Code: Alles auswählen
void QObject::installEventFilter (QObject *filterObj)Ja ich habe an das gedenkt. Aber es gibt eine Probleme : QEvent::ChildAdded oder ChildRemoved ist emittiert erst wann einen direkt kind ist instanziert. Zum Beispiel :
class Etwas
{
Etwas::Etwas()
{
QWidget *wid = new QWidget(this) // will be catched
QWidget *widChild = new QWidget(wid) // WILL NOT BE CATCHED !!
}
bool Etwas::event(QEvent *event)
{
if (event->type() == QEvent::ChildAdded)
{
QObject* theAddedChild = event->child();
MY_FUNCTION(theAddedChild);
}
else
return QWidget::event(event);
}
Und QEvent::ShowEvent ist sehr bizarr : es gibt keine method child() auf dem objekt QShowEvent *event um einen "pointer" auf dem objekt was ist angezeigt zu bekommen.
Vielleicht muss ich das method "event(QEvent* e)" in QObjekt oder QWidget class implementieren ?
class Etwas
{
Etwas::Etwas()
{
QWidget *wid = new QWidget(this) // will be catched
QWidget *widChild = new QWidget(wid) // WILL NOT BE CATCHED !!
}
bool Etwas::event(QEvent *event)
{
if (event->type() == QEvent::ChildAdded)
{
QObject* theAddedChild = event->child();
MY_FUNCTION(theAddedChild);
}
else
return QWidget::event(event);
}
Und QEvent::ShowEvent ist sehr bizarr : es gibt keine method child() auf dem objekt QShowEvent *event um einen "pointer" auf dem objekt was ist angezeigt zu bekommen.
Vielleicht muss ich das method "event(QEvent* e)" in QObjekt oder QWidget class implementieren ?
ja upsala es möglich. Aber das Probleme ist identisch :
QWidget* wid = new QWidget(this) // catched by 'this' event handler
QWidget* widChild = new QWidget(wid) // not catched, so :
widChild->installEventFilter(myFilter); // und myFilter will MY_FUNCTION appellieren wann der Objekt ist instanziert
Ich muss die method 'installEventFilter' appellieren für jedes widget (ausser für direkt kinden). Das ist ziemlich dasselbe meine method für jedes widget appellieren :
QWidget* widChild = new QWidget(wid)
widChild->MY_FUNCTION(myFilter);
-----------------------------------------------------------------------------------
andiK,
Das kann ich möglich tun erst für meinen Klassen. Aber es ist unmöglich für einen Objekt wie QProgessDialog, weil ich muss die Qt QProgressDialog Konstruktor modifizieren. Und ich will das nicht machen...
QWidget* wid = new QWidget(this) // catched by 'this' event handler
QWidget* widChild = new QWidget(wid) // not catched, so :
widChild->installEventFilter(myFilter); // und myFilter will MY_FUNCTION appellieren wann der Objekt ist instanziert
Ich muss die method 'installEventFilter' appellieren für jedes widget (ausser für direkt kinden). Das ist ziemlich dasselbe meine method für jedes widget appellieren :
QWidget* widChild = new QWidget(wid)
widChild->MY_FUNCTION(myFilter);
-----------------------------------------------------------------------------------
andiK,
Das kann ich möglich tun erst für meinen Klassen. Aber es ist unmöglich für einen Objekt wie QProgessDialog, weil ich muss die Qt QProgressDialog Konstruktor modifizieren. Und ich will das nicht machen...