Qt_Signal_Slot - 8BitsCoding/RobotMentor GitHub Wiki

ํ•ต์‹ฌ๋งŒ ์„ค๋ช…

์ „์ฒด ๊ตฌ์กฐ๊ฐ€ ์ด๋Ÿฐ์‹

QObject::connect(์‹œ๊ทธ๋„, ์Šฌ๋Ÿฟ);

์‹œ๊ทธ๋„์€ ๋ณด๋‚ด๋Š” ์ชฝ

์Šฌ๋Ÿฟ์€ ๋ฐ›๋Š” ์ชฝ์ด๋ผ ์ƒ๊ฐํ•˜์ž.

์˜ˆ๋ฅผ ๋“ค์–ด ์„ค๋ช…

QObject::connect(&a, SIGNAL(valueChanged(int)), &b, SLOT(setValue(int)));
QObject::connect(&qnode, SIGNAL(updatePCService(int)), this, SLOT(update_VS_Edit(int)));
// qnode๋ผ๋Š” ํด๋ž˜์Šค์— updatePCService ์‹œ๊ทธ๋„ ๋“ฑ๋ก
// ๋ณธ(this) ํด๋ž˜์Šค์— update_VS_Edit ์Šฌ๋Ÿฟ ๋“ฑ๋ก
// signal์€ ์•„๋ž˜์™€ ๊ฐ™์ด ์‚ฌ์šฉ๋จ.
void QNode::topic_VDS_callback(const asv_msgs::OutboardThrottleFeedback &msg)
{
    for(std::vector<asv_msgs::OutboardThrottle>::const_iterator it = msg.outboard_throttles.begin(); it != msg.outboard_throttles.end(); ++it)
    {
        temp_VDS = *it;
    }

    // ์—ฌ๊ธฐ
    Q_EMIT updateVDS(&temp_VDS);
}
// *.h ํŒŒ์ผ์—์„œ ์‹œ๊ทธ๋„์„ ์•„๋ž˜์™€ ๊ฐ™์ด ๋“ฑ๋ก
Q_SIGNALS:
    void updateVDS(asv_msgs::OutboardThrottle*);
// *.h ํŒŒ์ผ์—์„œ ์Šฌ๋Ÿฟ๋„ ์•„๋ž˜์™€ ๊ฐ™์ด ๋“ฑ๋ก
public Q_SLOTS:
        void update_VDS_Edit(asv_msgs::OutboardThrottle* msg);

์ฝ”๋“œ ์ „์ฒด

class Counter
{
public:
    Counter() { m_value = 0; }

    int value() const { return m_value; }
    void setValue(int value);

private:
    int m_value;
};
#include <QObject>

class Counter : public QObject
{
    Q_OBJECT

public:
    Counter() { m_value = 0; }

    int value() const { return m_value; }

public slots:
    void setValue(int value);

signals:
    void valueChanged(int newValue);

private:
    int m_value;
}
void Counter::setValue(int value)
{
    if(value != m_value) {
        m_value = value;
        emit valueChaneged(value);
    }
}
Counter a, b;
QObject::connect(&a, SIGNAL(valueChanged(int)), &b, SLOT(setValue(int)));

์ฐธ๊ณ ์‚ฌ์ดํŠธ

โš ๏ธ **GitHub.com Fallback** โš ๏ธ