نمایش نتایج 1 تا 12 از 12

نام تاپیک: دسترسی به ایونت کلیک یه ویجت که خودم درست کردم ... !

  1. #1

    Question دسترسی به ایونت کلیک یه ویجت که خودم درست کردم ... !

    درود ...

    یه Qpushbutton تو mainwindow.cpp ساختم با کد زیر :

    QPushButton *btn;

    board::board(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::board)
    {
    ui->setupUi(this);


    btn = new QPushButton(this);
    btn->setGeometry(170,170,60,60);
    btn->setObjectName("btn1");
    btn->setText("push...");

    }





    حالا مثلا 10 تا از این button ها که همشون رو با آبجکت btn گذاشتم رو فرم دارم . تو سی شارپ میتونسیم با دستور sender رو اون button که کلیک شده دسترسی پیدا کنیم و یه تابع btn تعریف کنیم که یه سری دستورات رو انجام بده ...

    تو Qt چطور میتونم این کارو انجام بدم؟؟

  2. #2

    نقل قول: دسترسی به ایونت کلیک یه ویجت که خودم درست کردم ... !

    اگر منظورتون رو درست متوجه شده باشم ، می تونید تابع مجازی eventFilter رو دوباره تعریف کنید و در صورت کلیک روی آیتم مورد نظرتون دستوراتی رو انجام بدید مثلا

    bool MainWindow::eventFilter(QObject *object, QEvent *event)
    {
    if(event->type() == QEvent::MouseButtonPress && object->objectName() == "btn1")
    {
    //your statement
    }
    return false;
    }

    آخرین ویرایش به وسیله chikar : چهارشنبه 06 اسفند 1393 در 18:37 عصر

  3. #3

    نقل قول: دسترسی به ایونت کلیک یه ویجت که خودم درست کردم ... !

    البته شما یه راه دیگه هم داری، اون استفاده از sender هست:
    in MainWindow.cpp


    x = 0; //x is int
    for(int i=0;i<4 ;i++)
    {
    btn = new QPushButton(this);
    btn->setGeometry(x,0,100,30);
    btn->setProperty("my_btn",i);
    btn->setText("push...");
    x +=100;
    connect(btn,SIGNAL(clicked()),this,SLOT(mybtn_clic ked()));
    }

    your slot

    void MainWindow::mybtn_clicked()
    {
    msg.information(this,"",sender()->property("my_btn").toString());

    }
    btn_sender.png

  4. #4

    نقل قول: دسترسی به ایونت کلیک یه ویجت که خودم درست کردم ... !

    نقل قول نوشته شده توسط chikar مشاهده تاپیک
    البته شما یه راه دیگه هم داری، اون استفاده از sender هست:
    in MainWindow.cpp


    x = 0; //x is int
    for(int i=0;i<4 ;i++)
    {
    btn = new QPushButton(this);
    btn->setGeometry(x,0,100,30);
    btn->setProperty("my_btn",i);
    btn->setText("push...");
    x +=100;
    connect(btn,SIGNAL(clicked()),this,SLOT(mybtn_clic ked()));
    }

    your slot

    void MainWindow::mybtn_clicked()
    {
    msg.information(this,"",sender()->property("my_btn").toString());

    }
    btn_sender.png


    دقیقا دستور sender رو می خواستم خیلی ممنون

  5. #5

    نقل قول: دسترسی به ایونت کلیک یه ویجت که خودم درست کردم ... !

    نقل قول نوشته شده توسط ravaei مشاهده تاپیک
    دقیقا دستور sender رو می خواستم خیلی ممنون
    خواهش می کنم

  6. #6

    نقل قول: دسترسی به ایونت کلیک یه ویجت که خودم درست کردم ... !

    نقل قول نوشته شده توسط chikar مشاهده تاپیک
    ...
    درود ...

    یه مشکل من یه تابع ساختم به نام createbtn که btn هارو اونجا به فرم add میکنه دستور connect رو هم که اونجا مینویسم error میده داخل main هم مینویسم کار نمی کنه واسه استفاده از connect باید همه کارو تو mainwindow آنجام بدم؟؟
    آخرین ویرایش به وسیله ravaei : جمعه 08 اسفند 1393 در 18:46 عصر

  7. #7

    نقل قول: دسترسی به ایونت کلیک یه ویجت که خودم درست کردم ... !

    یه مشکل من یه تابع ساختم به نام createbtn که btn هارو اونجا به فرم add میکنه دستور connect رو هم که اونجا مینویسم error میده داخل main هم مینویسم کار نمی کنه واسه استفاده از connect باید همه کارو تو mainwindow آنجام بدم؟؟[/QUOTE]

    نه connect رو داخل تابع تون هم می تونید استفاده کنید
    شما تابع createbtn رو داخل همون mainwindow تعریف کردید؟
    می شه Connect ای که نوشتید رو بگذارید؟

  8. #8

    نقل قول: دسترسی به ایونت کلیک یه ویجت که خودم درست کردم ... !

    نقل قول نوشته شده توسط ravaei مشاهده تاپیک
    درود ...

    یه مشکل من یه تابع ساختم به نام createbtn که btn هارو اونجا به فرم add میکنه دستور connect رو هم که اونجا مینویسم error میده داخل main هم مینویسم کار نمی کنه واسه استفاده از connect باید همه کارو تو mainwindow آنجام بدم؟؟
    نه connect رو داخل تابع تون هم می تونید استفاده کنید
    شما تابع createbtn رو داخل همون mainwindow تعریف کردید؟
    می شه Connect ای که نوشتید رو بگذارید؟

  9. #9

    نقل قول: دسترسی به ایونت کلیک یه ویجت که خودم درست کردم ... !

    نقل قول نوشته شده توسط chikar مشاهده تاپیک
    نه connect رو داخل تابع تون هم می تونید استفاده کنید
    شما تابع createbtn رو داخل همون mainwindow تعریف کردید؟
    می شه Connect ای که نوشتید رو بگذارید؟


    void createboard(QMainWindow *a , int n)
    {

    for(int i= 0 ; i<n ; i++)
    {
    xloc = 0;
    yloc +=40;
    for(int j =0 ; j<n ;j++)
    {
    xloc+=40;


    btn = new QPushButton(a);
    btn->setStyleSheet("background-color: rgb(85, 85, 0)");
    btn->setGeometry(xloc,yloc,40,40);
    btn->setObjectName("btn");
    connect(btn,SIGNAL(clicked()),a,SLOT(mybtn_clicked ()));
    }


    }

    }










    board::board(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::board)
    {


    ui->setupUi(this);






    createboard(this,5);










    }



    تابع create رو بیرون تعریف کردم زیر header ها ...
    error نمیده ولی عملم نمیکنه :(

  10. #10

    نقل قول: دسترسی به ایونت کلیک یه ویجت که خودم درست کردم ... !

    شما اولا بهتر هست که این تابع رو داخل خود MainWindow بنویسید خیلی عاقلانه تر هست
    البته این روش هم جواب می ده، باید به این صورت عمل کنید


    void my_funck(MainWindow *a)
    {

    QPushButton *btn0 = new QPushButton("ddddd",a);
    btn0->setGeometry(10,10,100,30);
    QObject::connect(btn0,SIGNAL(clicked()),a,SLOT(clo se()));
    }
    MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
    {

    ui->setupUi(this);
    my_funck(this);
    }


  11. #11

    نقل قول: دسترسی به ایونت کلیک یه ویجت که خودم درست کردم ... !

    نقل قول نوشته شده توسط chikar مشاهده تاپیک
    شما اولا بهتر هست که این تابع رو داخل خود MainWindow بنویسید خیلی عاقلانه تر هست
    البته این روش هم جواب می ده، باید به این صورت عمل کنید


    void my_funck(MainWindow *a)
    {

    QPushButton *btn0 = new QPushButton("ddddd",a);
    btn0->setGeometry(10,10,100,30);
    QObject::connect(btn0,SIGNAL(clicked()),a,SLOT(clo se()));
    }
    MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
    {

    ui->setupUi(this);
    my_funck(this);
    }


    تشکرات فراوان ...

    فقط نفهمیدم این یعنی چی؟؟

    Qobject :: اصلا :: معنیش چیه؟؟ یخورده گنگه این چیزای C++‎ برام C#‎ این دنگو فنگارو نداشت

  12. #12

    نقل قول: دسترسی به ایونت کلیک یه ویجت که خودم درست کردم ... !

    نقل قول نوشته شده توسط ravaei مشاهده تاپیک
    تشکرات فراوان ...

    فقط نفهمیدم این یعنی چی؟؟

    Qobject :: اصلا :: معنیش چیه؟؟ یخورده گنگه این چیزای C++‎‎ برام C#‎‎ این دنگو فنگارو نداشت
    خواهش می کنم
    برای اطلاعات بیشتر از QObject به مستندات کیوت مراجعه کنید
    Connect هم یک تابع استاتیک از همین نوع هست

تاپیک های مشابه

  1. استفاده از تابع Onblur و فراخوانی ایونت کلیک یک باتن
    نوشته شده توسط bad_lucky در بخش ASP.NET Web Forms
    پاسخ: 3
    آخرین پست: یک شنبه 22 دی 1392, 20:59 عصر
  2. دسترسی به رویداد کلیک Button داخل Usercontrol
    نوشته شده توسط asghar2008 در بخش VB.NET
    پاسخ: 5
    آخرین پست: شنبه 16 دی 1391, 15:54 عصر
  3. کلیک روی ویجت
    نوشته شده توسط als_1360 در بخش Android Studio
    پاسخ: 4
    آخرین پست: چهارشنبه 16 فروردین 1391, 15:39 عصر
  4. سوال: دسترسی به رویداد کلیک یک دکمه در زمان اجرا
    نوشته شده توسط adineh67 در بخش ASP.NET Web Forms
    پاسخ: 3
    آخرین پست: چهارشنبه 09 آذر 1390, 14:24 عصر
  5. سوال: ایونت کلیک در gridview
    نوشته شده توسط HABIB_TANHA در بخش ASP.NET Web Forms
    پاسخ: 4
    آخرین پست: چهارشنبه 22 دی 1389, 20:37 عصر

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •