QT中類的成員函式作為回撥函式
阿新 • • 發佈:2019-01-24
這裡主要實現的功能:需要設計一個外掛,把外掛內的資料通過函式指標引數的方式傳遞到另外一個類中,顯示出來,使用回撥函式的方式
http://blog.csdn.net/ksn13/article/details/40538083,程式碼的邏輯和上述網站的第三種方法一樣,可以呼叫但是資料無法傳遞。
最後在測試幾天的情況下,終於找到最終的解決方法:bind與function的使用:
1.首先看bind和function的定義和使用:
然後你要詳細的知道C++模板類,C++模板類有很多的型別形參來統一化,可以讓編譯器通過一種類,或者函式處理不同的引數需求。
看過上面三篇文章你可以深入的知道function和bind的原理。其實function是解決了普通函式和類成員函式的統一委託。客戶端不需要去關心委託的是普通函式還是類成員函式!
2.具體的操作:
類A :a.h
typedef std::function<void(int a)> Func;
void getValue(int a);
void get(Func c);
Func f;
a.cpp
void A::getValue(int a)
{
f(a);
}
void A::get(func c)
{
f=c;
}
在widget類裡面定義一個回撥函式,進行bind轉換,作為get的傳入引數,即可。