Qt 訊號槽如何傳遞引數(或帶引數的訊號槽)

Rocky_Ansi發表於2015-03-05

                                訊號槽如何傳遞引數(或帶引數的訊號槽)

  利用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 這個數字;;





相關文章