วิธีการเชื่อมต่อสัญญาณและสล็อตด้วยค่าอาร์กิวเมนต์ที่แปลงแล้ว

วิธีง่ายๆ ในการเชื่อมต่อสัญญาณและสล็อตด้วยค่าอาร์กิวเมนต์ที่แปลงแล้ว ตัวอย่างเช่น ฉันมี signal(bool state) ตัวเดียว มันเชื่อมต่อกับสล็อต slot(bool reversed_state) ที่นี่สถานะเป็นสถานะย้อนกลับ (ไม่ใช่เชิงตรรกะ) ของสถานะสัญญาณ


person user1899020    schedule 01.10.2013    source แหล่งที่มา


คำตอบ (1)


สร้างช่องกลางเพื่อเชื่อมโยงทั้งสอง: -

class MyClass : public QObject
{
    Q_OBJECT
public:
    signals:
        void SomeSignal(bool state);
        void SomeSignalSwitched(bool state); // reverse the state

    public slots:            

        void ReversedStateSlot(bool reversed_state);
 };


void MyClass::SomeSignalSwitched(bool state)
{
    bool newState = !state
    emit SomeSignalSwitched(newState);
}

// NOTE Qt 5 connect functions

connect(myClassObject, &MyClass::SomeSignal, myClassObject, &MyClass::SomeSignalSwitched);
connect(myClassObject, &MyClass::SomeSignalSwitched, myClassObject, &MyClass::ReversedStateSlot);
person TheDarkKnight    schedule 01.10.2013