訊號槽如何傳遞引數(或帶引數的訊號槽)
利用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 這個數字;;