È possibile collegare un segnale allo slot statico senza istanza del ricevitore?È possibile collegare un segnale a uno slot statico senza un'istanza di ricevitore?
Ti piace questa: connect(&object, SIGNAL(some()), STATIC_SLOT(staticFooMember()));
c'è una funzione QApplication::closeAllWindows()
con [fessura statico] attributo nella documentazione Qt. E c'è un esempio di utilizzo dalla documentazione:
exitAct = new QAction(tr("E&xit"), this);
exitAct->setShortcuts(QKeySequence::Quit);
exitAct->setStatusTip(tr("Exit the application"));
connect(exitAct, SIGNAL(triggered()), qApp, SLOT(closeAllWindows()));
E 'permesso di fare la stessa azione, ma senza passare una variabile di istanza (ad esempio quando una classe ha solo funzioni statiche)?
class Some : public QObject {
Q_OBJECT
public slots:
static void foo();
private:
Some();
};
Forse Frank Osterfeld è giusto ed è meglio utilizzare pattern Singleton in questo caso, ma io sono ancora sorpreso perché questa funzione non è stata ancora implementata.
Aggiornamento:
Sì, lo è. Non capisco perché è impossibile richiamare la funzione statica senza oggetto in Qt Meta-Object System? –
Sono d'accordo è un inconveniente del sistema Qt, ancora non è possibile. – UmNyobe
Non riesco a vedere molto di un inconveniente. Le funzioni statiche con effetti collaterali sono comunque malvagie e, se necessario, è possibile utilizzare istanze QObject singleton. –