Czy można podłączyć sygnał do gniazda statycznego bez instancji odbiornika?Czy jest możliwe podłączenie sygnału do gniazda statycznego bez instancji odbiornika?
Jak to: connect(&object, SIGNAL(some()), STATIC_SLOT(staticFooMember()));
Jest QApplication::closeAllWindows()
funkcja z gniazda [statyczny] atrybutu w dokumentacji Qt. I jest przykładem użycia go z dokumentacją:
exitAct = new QAction(tr("E&xit"), this);
exitAct->setShortcuts(QKeySequence::Quit);
exitAct->setStatusTip(tr("Exit the application"));
connect(exitAct, SIGNAL(triggered()), qApp, SLOT(closeAllWindows()));
Czy można zrobić to samo działanie, ale bez przechodzenia zmienną instancji (na przykład, gdy klasa ma tylko funkcje statyczne)?
class Some : public QObject {
Q_OBJECT
public slots:
static void foo();
private:
Some();
};
Może Frank Osterfeld ma rację i lepiej jest użyć Singleton w tym przypadku, ale nadal jestem zaskoczony, dlaczego ta funkcja nie została jeszcze zaimplementowana.
Aktualizacja:
Tak jest. Nie rozumiem, dlaczego nie można wywołać funkcji statycznej bez obiektu w systemie metamotorycznym Qt? –
Zgadzam się, że jest to wada systemu Qt, ale wciąż nie jest to możliwe. – UmNyobe
Nie widzę wiele wad. Funkcje statyczne z efektami ubocznymi i tak są złe, a w razie potrzeby można użyć pojedynczych instancji QObject. –