Qt帶參數的信號和槽


在Qt的開發過程中,信號帶參數是很常見的,在使用帶參數的信號槽時,有以下幾點需要注意。

  • 當信號和槽函數的參數數量相同時,它們的參數類型要完全一致。

信號和槽函數的聲明:

signals:
    void iSignal(int b);
    void strSignal(QString str);
public slots:
    void iSlots(int b);
    void strSlots(QString str);

信號和槽函數的綁定:

    connect(this,SIGNAL(iSignal(int)),
            this,SLOT(iSlots(int)));

    connect(this,SIGNAL(strSignal(QString)),
            this,SLOT(strSlots(QString)));

發射信號:

    emit iSignal(5);
    emit strSignal("hello word");

槽函數的實現:

void MainWindow::iSlots(int b)
{
    qDebug() << "b = " << b;
}

void MainWindow::strSlots(QString str)
{
    qDebug() << str;
}
  • 當信號的參數與槽函數的參數數量不同時,只能是信號的參數數量多於槽函數的參數數量,且前面相同數量的參數類型應一致,信號中多余的參數會被忽略。

信號:

    void iSignal(int b,int a);

響應信號的槽函數:

void MainWindow::iSlots(int b)
{
    qDebug() << "b = " << b;
}
  • 在不進行參數傳遞時,信號槽綁定也是要求信號的參數數量大於等於槽函數的參數數量,這種情況一般是一個帶參數的信號去綁定一個無參數的槽函數。

信號:

    void iSignal(int b,int a);

響應信號的槽函數:

void iSlots();

信號和槽函數的綁定:

    connect(this,SIGNAL(iSignal(int,int)),
            this,SLOT(iSlots()));


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM