Có thể kết nối tín hiệu với khe tĩnh mà không có trường hợp máy thu không?Có thể kết nối một tín hiệu với một khe tĩnh mà không có trường hợp máy thu không?
Như thế này: connect(&object, SIGNAL(some()), STATIC_SLOT(staticFooMember()));
Có một chức năng QApplication::closeAllWindows()
với [khe tĩnh] thuộc tính trong tài liệu hướng dẫn Qt. Và có một ví dụ về việc sử dụng nó từ tài liệu:
exitAct = new QAction(tr("E&xit"), this);
exitAct->setShortcuts(QKeySequence::Quit);
exitAct->setStatusTip(tr("Exit the application"));
connect(exitAct, SIGNAL(triggered()), qApp, SLOT(closeAllWindows()));
Được phép thực hiện hành động tương tự nhưng không vượt qua biến mẫu (ví dụ: khi lớp chỉ có chức năng tĩnh)?
class Some : public QObject {
Q_OBJECT
public slots:
static void foo();
private:
Some();
};
lẽ Frank Osterfeld là đúng và nó là tốt hơn để sử dụng Singleton pattern trong trường hợp này nhưng tôi vẫn ngạc nhiên tại sao tính năng này chưa được thực hiện được nêu ra.
Cập nhật:
Vâng. Tôi không hiểu tại sao không thể gọi hàm tĩnh mà không có đối tượng trong Hệ thống Meta-Object Qt? –
Tôi đồng ý rằng đó là nhược điểm của hệ thống Qt, vẫn không thể thực hiện được. – UmNyobe
Không thể thấy nhiều nhược điểm. Tuy nhiên, các hàm tĩnh với các hiệu ứng phụ đều là ác, và có thể sử dụng một cá thể QObject đơn lẻ nếu cần. –