چگونگی ایجاد ارتباط signal و slot توسط connect در Qt - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

چگونگی ایجاد ارتباط signal و slot توسط connect در Qt

+2 امتیاز
سلام.ورودی های متد connect در Qt چه چیزهای هستند.همچنین slot  و signal آیا پارامتر دارند و اگه دارند چه چیزی میتونه باشه.

ممنون
سوال شده اردیبهشت 7, 1393  بوسیله ی maryam (امتیاز 338)   12 33 44
دوباره تگ گذاری شد شهریور 12, 1393 بوسیله ی BlueBlade

1 پاسخ

+4 امتیاز
 
بهترین پاسخ

connect از overload های زیادی استفاده میکنه مثلا یکیشون اینه :

QObject::connect(const QObject * sender, const char * signal, const QObject * receiver, const char * method, Qt::ConnectionType type = Qt::AutoConnection)

ورودی ها به ترتیب اینا هستن

  • شی ارسال کننده دستور که از کلاس QObject مشتق شده .
  • نوع SIGNAL که باید در کلاسی که ورودی اول هم هست  موجود باشه
  • شی دریافت کننده دستور که از کلاس QObject مشتق شده .
  • تابع که با فرستاده شدن SIGNAL که ذکر کردیم باید اجرا بشه
  • ورودی بعدی هم نوع اتصال هست که اکثر وقت ها نیازی به ذکر شدنش نیست (انواعشون داخل document Qt کامل توضیح داده شدن )

 

مثلا فرض کنید میخواهید 2 تا QSlider رو به هم وصل کنید بطوری که با عوض شدن مقدار یکی اون یکی هم عوض بشه (2 تا QSlider داخل فرم داریم به اسم های slider1 , slider2 ) :

    connect(ui->slider1,SIGNAL(valueChanged(int)),ui->slider2,SLOT(setValue(int)));

 

متد connect به شکل های دیگه ای هم میشه ازش استفاده کرد مثلا میشه از lambda c++11 استفاده کرد و...

    connect(ui->slider1,&QSlider::valueChanged,[&](int n){ui->slider2->setValue(n);});

 

پاسخ داده شده اردیبهشت 7, 1393 بوسیله ی BlueBlade (امتیاز 15,315)   15 18 89
انتخاب شد اردیبهشت 7, 1393 بوسیله ی maryam
...