重載信號函數,解決參數問題

在QT中,咱們的信號函數與槽函數是須要參數匹配的,只有參數匹配了,moc才能將這兩個函數聯繫起來,不然編譯器將沒法分辨該調用哪一個函數。函數

那麼若是出現了,一個信號函數擁有兩種不一樣的參數,咱們的槽函數須要如何申明呢?
在QT4中,咱們的鏈接使用的是兩個不一樣定義的宏,這樣咱們能夠顯式的給出咱們須要的參數類型,可是在QT5中,咱們通常不使用宏定義,咱們對一個鏈接的聲明以下:spa

QObject::connect(*sender,&signal,*receiver,&slot);

 

能夠明顯看到,咱們沒法在聲明中顯示的給出咱們須要的參數類型,那麼接下來爲了解決不一樣參數的重載問題,咱們須要的是顯式的創立一個信號函數的指針,下面直接給出例子,例如我須要處理QComBox中的currentIndexChaned信號,這個信號有兩種參數,一是QString,另外一個是int,咱們須要使用的int這個信號函數:指針

void (QComboBox::*fun)(int) = &QComboBox::currentIndexChanged;
QObject::connect(comboBox,fun,*receiver,&slot);

 

這樣,咱們傳遞給槽函數的信號就是int型的了,也就解決了重載信號函數的問題。code

相關文章
相關標籤/搜索