Qt 槽函式中獲取發出訊號的物件

2021-07-23 17:08:31 字數 642 閱讀 1771

核心:qobject::sender()

對於訊號與槽的連線

connect( obj1 , signal(sigfun()) , obj2 , slot(slotfun()) )

或者connect( obj1 , &object1::sigfun , obj2 , &object2::slotfun )

可以通過訊號與槽函式的引數來傳遞資料

但是存在一些情況,我們希望能在slotfun()裡去獲得obj1物件指標

實際上可以通過qt基類qobject::sender(),在槽函式裡獲得繫結的訊號的**物件,解決一些動態繫結訊號與槽的情況下,非常有用

例子:選單欄中的最近開啟檔案列表

最近開啟檔案位址列表

qlistfilelist;

生成對應的qaction

for(int i=0;i

我們在qaction裡動態setdata了一些資料

正常情況,只能知道觸發了選單qaction,由於是動態建立的qaction,所以沒辦法在槽函式slotfun裡確定是哪個qaction觸發了這個槽,所以也就沒辦法獲取act->data()裡的資料

那麼在槽函式裡使用qobject::sender(),我們就能獲得觸發該槽函式的訊號的物件

slotfun()

Qt 槽函式中獲取發出訊號的物件

核心 qobject sender 對於訊號與槽的連線 connect obj1 signal sigfun obj2 slot slotfun 或者connect obj1 object1 sigfun obj2 object2 slotfun 可以通過訊號與槽函式的引數來傳遞資料 但是存在一些情...

QT 訊號已發出,但是槽函式未執行

問題描述 我的工程使用udp進行通訊,初始程式執行正常。執行一段時間後,udp正常接收資料,並且成功將收到的資料發出訊號,但是此時不執行槽函式。並且介面出現卡死現象。猜想可能 執行緒阻塞 物件異常銷毀 總感覺沒有遇到過,後邊發覺確實想多了 後續解決 1.使用資料庫連線池的時候只是增加db,每次使用完...

QT訊號槽connect函式

使用qt開發時,通常使用connect函式只傳遞四個引數 connect sender,signal signal receiver,slot slot 所以我們有可能認為該函式就只有四個引數,但實際上是有第五個引數的,只是通常該函式已經給第五個引數賦值了而已,我們所使用的是預設值 sender和r...