¿Es posible conectar una señal a la ranura estático sin instancia receptor?¿Es posible conectar una señal a una ranura estático sin una instancia de receptor?
De esta manera: connect(&object, SIGNAL(some()), STATIC_SLOT(staticFooMember()));
hay una función QApplication::closeAllWindows()
con el atributo [ranura estática] en la documentación de Qt. Y hay un ejemplo del uso que de la documentación:
exitAct = new QAction(tr("E&xit"), this);
exitAct->setShortcuts(QKeySequence::Quit);
exitAct->setStatusTip(tr("Exit the application"));
connect(exitAct, SIGNAL(triggered()), qApp, SLOT(closeAllWindows()));
¿Se puede hacer la misma acción, pero sin pasar una variable de instancia (por ejemplo, cuando una clase tiene sólo funciones estáticas)?
class Some : public QObject {
Q_OBJECT
public slots:
static void foo();
private:
Some();
};
Tal vez Frank Osterfeld es correcto y es mejor utilizar patrón singleton en este caso, pero todavía estoy sorprendido por qué esta característica no se ha implementado todavía.
Actualización:
Sí, lo es. No entiendo por qué es imposible invocar la función estática sin objeto en Qt Meta-Object System? –
estoy de acuerdo es un inconveniente del sistema de Qt, todavía no es posible. – UmNyobe
No se puede ver mucho de un inconveniente. Las funciones estáticas con efectos secundarios son malvadas de todos modos, y uno puede usar instancias de QObject únicas si es necesario. –