信號槽如何傳遞參數(或帶參數的信號槽)
利用Qt進行程序開發時,有時需要信號槽來完成參數傳遞。帶參數的信號槽在使用時,有幾點需要注意的地方,下面結合實例進行介紹。
第一點:當信號與槽函數的參數數量相同時,它們參數類型要完全一致。
signals:
void emitdata(int);
private slots:
void getdata(int); // 具體實現 qDebug() << "int : " << a << agr << endl;
然后進行鏈接 connect(this,SIGNAL(emitdata(int)),this,SLOT(getdata(int)));
發送信號: emit emitdata(5) ;
我們 將會收到 5 這個數字;;
第二點:當信號的參數與槽函數的參數數量不同時,。
1、 當我們的槽參數數量多於信號數量時 將會出現 QObject::connect: Incompatible sender/receiver arguments 這個錯誤;
2、 只能是信號的參數數量多於槽函數的參數數量,且前面相同數量的參數類型應一致,信號中多余的參數會被忽略 ;
我們只能接受第一個參數;
signals:
void emitdata(int,int);
private slots:
void getdata(int); // 具體實現 qDebug() << "int : " << a << agr << endl;
然后進行鏈接 connect(this,SIGNAL(emitdata(int,int)),this,SLOT(getdata(int)));
發送信號: emit emitdata(5,10) ;
我們 只能會收到 5 這個數字;;