我想一些功能連接爲無槽類,我可以這樣做:連接沒有對象
void update() { }
int main()
{
QTimer timer = ...;
QObject::connect(timer, SIGNAL(timeout()), SLOT(update()));
return 0;
}
編譯器說,如果沒有對象這是不可能的。
我想一些功能連接爲無槽類,我可以這樣做:連接沒有對象
void update() { }
int main()
{
QTimer timer = ...;
QObject::connect(timer, SIGNAL(timeout()), SLOT(update()));
return 0;
}
編譯器說,如果沒有對象這是不可能的。
AFAIK,你只能信號連接到插槽,插槽只能存在作爲Q_OBJECT的成員函數。
雖然很多人集中在模板與Qt的信號和boost ::信號或gtkmm的信號之間的差異MOC,這是我最終更關心的差異。 Qt的信號不如表達,並且導致比我想要的更多的依賴。
我仍然使用Qt,但是這只是因爲gtkmm的可訪問性是完全在Win32系統缺失。
你能做什麼,當然是讓QTimer的子類,連接到其自己的超時信號與生成,你可以連接到外部函數一個boost ::信號的插槽。儘管如此,請注意Qt中使用boost信號時的問題,但我只是使用signals2來完全避免它,並且我獲得了線程安全性。
你需要的是Qt的認識的插槽。要做到這一點,你必須開設一門課。所以我會說不可能的。
您可以使用Boost的信號插槽機制。 Boost Signal Slot
如果您使用的是Qt 4.1或更高版本都可以同時按此處的說明使用Boost signals & slots with Qt
或許值得指出的是,此功能使用Qt 5引入http://developer.qt.nokia .COM /維基/ New_Signal_Slot_Syntax – leinir 2012-02-27 07:04:37