我根據 Qt 的經驗假設所有信號和插槽都需要相同的簽名。最近我看到 Qt 代碼連接了完全不同的簽名,并且當它們連接到的信號發出時,插槽被呼叫。例如,將幾個物件發送到不帶引數的插槽的信號。
我知道可以呼叫 QObject::connect() 來連接信號和插槽的不同方式,但我仍然認為規則是它們的簽名必須相同。
uj5u.com熱心網友回復:
來自Qt Signals and Slots的檔案:
信號的簽名必須與接收時隙的簽名相匹配。(事實上??,一個槽的簽名可能比它接收到的信號更短,因為它可以忽略額外的引數。)
本質上,您可以從插槽簽名的末尾洗掉引數(您不能從開頭或中間洗掉它們)。
如果您需要忽略任意引數,您可以使插槽的簽名與信號相同,然后將Q_UNUSED宏用于您想要忽略的任何引數。例如:
void MyClass::mySlot(int foo, double argIDontCareAbout, int bar)
{
Q_UNUSED(argIDontCareAbout)
}
宏的要點Q_UNUSED是簡單地抑制有關未使用引數的編譯器警告。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/463655.html
上一篇:如何在QTc 中制作秒表?
下一篇:計算陣列內的陣列?PHP
