خانه برنامه نویسی آموزش برنامه نویسی Qt – QPushButton – connect()
استفاده از کلیدها و طریقه اتصال کلیدها به متدها در محیط برنامه نویسی Qt creator

آموزش برنامه نویسی Qt – QPushButton – connect()


۹ فروردین ۱۳۹۸
رضا احمدی
620 بازدید
دسته بندی : c++ , Qt creator , برنامه نویسی

در قسمت قبل از طریق محیط طراحی فرم یک کلید از کلاس QPushButton را به یک متد وصل کردیم و عملیات مد نظر را در آن متد پیاده سازی کردیم ولی راه حل مناسبتر استفاده از متد connect() از کلاس QObject است که میتوانیم انواع سیگنالها را به انواع اسلاتها وصل کنیم یا چندین سیگنال را به یک متد وصل کنیم.

نکته base class  یا پدر کلاسهای کیوت، کلاس QObject  است.

متد connect  به ۵ پارامتر به عنوان ورودی نیاز  دارد :

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

 پارامتر اول آبجکتی است که یک سیگنالی را میفرستد. (const QObject *sender )

پارامتر دوم نام سینگال است که آبجکت sender  ارسال می کند . (const char *signal )

پارامتر سوم آبجکتی است که این سیگنال را دریافت میکند. (const QObject *receiver )

پارامتر چهارم متد (تابع) است از کلاس آبجکت reciver که پاسخ سیگنال مد نظر است. ( const char *method )

پارامتر پنجم نوع اتصال ایت که معمولا بصورت همان  Qt::AutoConnection قرار داده می شود که بصورت پیش فرض است.

حال به برنامه ای که جلسه قبل نوشتیم می رویم :

در فایل zxmain.h کلاس zxMain خطوط زیر را به قسمت private slots  اضافه میکنیم.

private slots:

    void click_any_button();

و در فایل zxmain.cpp  این متد را پیاده سازی میکنیم.

void zxMain::click_any_button()
{
QMessageBox::information(this,”mrzx.ir”,”کلیک شناسایی شد.”);
}

حال وقت آن رسیده btn_2 , btn_3  را به این متدها وصل کنیم؛ برای این منظور خطوط زیر را به متد سازنده کلاس اضافه می کنیم:

connect(ui->btn_2,SIGNAL(clicked(bool)),this,SLOT(click_any_button()));

connect(ui->btn_3,SIGNAL(clicked(bool)),this,SLOT(click_any_button()));

” متد سازنده کلاس متدی است هم نام کلاس هیچ type ندارد حتی نوع void نیست و به محض اجرای کلاس ابتدا آن متد اجرا می شود “

حال پس از اجرای برنامه اگر بر روی کلید دو یا سه کلیک کنید پیغام کلیک شناسایی شد را دریافت می کنید.

سورس کامل برنامه به شرح زیر است:

zxmain.h

  1. #ifndef ZXMAIN_H
  2. #define ZXMAIN_H
  3.  
  4. #include <QMainWindow>
  5.  
  6. namespace Ui {
  7. class zxMain;
  8. }
  9.  
  10. class zxMain : public QMainWindow
  11. {
  12.     Q_OBJECT
  13.  
  14. public:
  15.     explicit zxMain(QWidget *parent = 0);    
  16.     ~zxMain();
  17.  
  18. private slots:
  19.     void on_btn_1_clicked();
  20.     void click_any_button();
  21.  
  22. private:
  23.     Ui::zxMain *ui;
  24. };
  25.  
  26. #endif // ZXMAIN_H

zxmain.cpp

  1. #include "zxmain.h"
  2. #include "ui_zxmain.h"
  3. #include <QMessageBox>
  4.  
  5. zxMain::zxMain(QWidget *parent) :
  6.     QMainWindow(parent),
  7.     ui(new Ui::zxMain)
  8. {
  9.     ui->setupUi(this);
  10.     connect(ui->btn_2,SIGNAL(clicked(bool)),this,SLOT(click_any_button()));
  11.     connect(ui->btn_3,SIGNAL(clicked(bool)),this,SLOT(click_any_button()));
  12. }
  13.  
  14. zxMain::~zxMain()
  15. {
  16.     delete ui;
  17. }
  18.  
  19. void zxMain::on_btn_1_clicked()
  20. {
  21.     QMessageBox::information(this,"mrzx.ir","شما بر روی کلید یک کلیک کردید.");
  22.  
  23. }
  24.  
  25. void zxMain::click_any_button()
  26. {
  27.     QMessageBox::information(this,"mrzx.ir","کلیک شناسایی شد.");
  28. }

آموزش های کوتاه و کاربردی برنامه نویسی c++  در محیط Qt creator  ادامه دارد…

مطالب مرتبط

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *