خطا در استفاده از signal & slot - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

خطا در استفاده از signal & slot

0 امتیاز

سلام

میشه بگین چرا این کد اشتباست؟ روی خطهای  ۳-۸-۲۶ ارور میده

#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 valueChanged(value);
    }
}


int main(){
    Counter a, b;
    QObject::connect(&a, SIGNAL(valueChanged(int)),&b, SLOT(setValue(int)));

    a.setValue(12);
    b.setValue(48);
    return 0;
}

 

سوال شده فروردین 20, 1394  بوسیله ی moh3en (امتیاز 209)   15 28 40
ویرایش شده فروردین 21, 1394 بوسیله ی moh3en
لطفاً لیست خطاهای ایجاد شده را هم قرار بدید.
26:  (undefined reference to `Counter::valueChanged(int
8:    undefined reference to `vtable for Counter
3:    undefined reference to `vtable for Counter
شما در ابتدا 2 تابع setValue و valueChanged پیاده سازی کنید دوباره کدتون را کامپایل کنید.
تابع setValue  در خط ۲۲ پیاده سازی شده ولی برای valuechage میشه یک مثال بزنین.
من signal & slot ها رو دارم از روی این لینک میخونم. بنظرتون خوبه؟
http://doc.qt.io/qt-5/signalsandslots.html
یک سوال دیگه اینکه  کد ;(emit valueChanged(value چکار میکنه؟ اول تابع valueChanged اجرا میشه و خروجیش به تابع slot  داده میشه؟
مرسی
شرمنده حواسم نبود valueChanged نیاز به پیاده سازی نداره در واقع سیگنال هستش شما در واقع وقتی مقدار value تغییر می کنه توسط emit سیگنال valueChanged را صادر می کنید که در واقع کاربر می تونه سیگنال این کلاس را به اسلات دلخواه bind کنه.
متن خطا ها رو هم قید کنید لطفاً

1 پاسخ

0 امتیاز
کلاس به به دو قسمت فایل h و cpp خرد کنید. پروژه را Clean & Compile کنید
پاسخ داده شده فروردین 28, 1394 بوسیله ی حامد مصافى (امتیاز 1,104)   2 3 12
...