Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Persian
  4. وراثت
QtWS25 Last Chance

وراثت

Scheduled Pinned Locked Moved Persian
31 Posts 3 Posters 15.2k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • S Offline
    S Offline
    silver
    wrote on 18 Apr 2012, 08:22 last edited by
    #1

    p{direction:rtl; text-align:right}. سلام

    p{direction:rtl; text-align:right}. من میخوام قسمت option برنامه ام رو توی یه کلاس جدید بذارم
    برای این کار اول یه کلاس به اسم option از کلاس اصلی برنامه به ارث میبرم و بعد connect برای این کلاس جدید کار نمیکنه
    چی کار باید بکنم؟

    p{direction:rtl; text-align:right}. اگه میشه یه نمونه کد ساده برای ارتیاط فرم ها با هم بهم بدین
    ممنون

    Linus Torvalds –
    Software is like sex: it’s better when it's free.

    1 Reply Last reply
    0
    • M Offline
      M Offline
      mohsen
      wrote on 23 Apr 2012, 12:25 last edited by
      #2

      p{direction: rtl; text-align:right}. بدون دیدن کد نمیتونیم راهنماییت کنیم

      1 Reply Last reply
      0
      • S Offline
        S Offline
        silver
        wrote on 25 Apr 2012, 17:05 last edited by
        #3

        p{direction:rtl; text-align:right}. کدش دربه داغونه :)
        https://github.com/silvergit/tictactoe
        من تازه دارم qt رو یاد میگیرم
        البته اگه یه مثال ساده با دو فرم برای ارتباط بین فرم ها میزدین بیشتر بهم کمک میشد
        شما کلاً از چه روشی استفاده میکنین؟
        وراثت - کلاس دوست - سیگنال و اسلات

        Linus Torvalds –
        Software is like sex: it’s better when it's free.

        1 Reply Last reply
        0
        • B Offline
          B Offline
          bs994
          wrote on 25 Apr 2012, 18:33 last edited by
          #4

          اگه دقیق بگی چی کار میخوای بکنی بهتر میشه کمک کرد

          استفاده می کنی و میخوای یه فرم یا دیالوگ که توش درست کردی را بهش ربط بدیmainwindowاگه از

          و همون سیگنال و اسلاتهconnect فکرکنم متداول ترین راهش استفاده از تایع
          مثلا یه دکمه بزار وقتی کلیک شد یه تابع فراخونی کنه که توش فرم جدید ساخته شه و ادامه داستان

          Real Eyes Realize Real Lies .

          1 Reply Last reply
          0
          • S Offline
            S Offline
            silver
            wrote on 25 Apr 2012, 21:00 last edited by
            #5

            p{direction:rtl; text-align:right}. برای مثال این رو در نظر بگیرید
            من با qdesigner دو تا فرم طراحی میکنم و میخوام فرم دوم با کلیک روی یه دکمه بتونه یه متغیر عضو کلاس فرم اول که private هم هست رو تغییر بده یا برعکس

            p{direction:rtl; text-align:right}. قبلا تمام کدهامو توی یه کلاس مینوشتم و مشکلی نیود اما الان میخوام برای هر فرم یه کلاس مجزا داشته باشم
            البته mainwindow و dialog و widget هم برام فرقی نداره فقط دسترسی به متغیرهای همدیگه برام مهمه

            Linus Torvalds –
            Software is like sex: it’s better when it's free.

            1 Reply Last reply
            0
            • B Offline
              B Offline
              bs994
              wrote on 26 Apr 2012, 04:45 last edited by
              #6

              من یه برنامه نوشتم که توش تو مین ویندو با کلیک یک فرم جدید می سازه و از کلاس مین ویندو مقدار لیبل موجود در کلاس فرم دومی رو تغییر می ده
              مقدار یک رشته در کلاس فرم رو تغییر میده و میریزه تو لیبل کلاس فرم
              کثیف کد زدم :D
              ببین کمکت میکنه ؟
              mainWindow.h
              @
              namespace Ui {
              class MainWindow;
              }
              class myform;
              class MainWindow : public QMainWindow
              {
              private slots :
              void newForm();
              private:
              myform *myForm;
              };
              @
              mainWindow.h
              @
              #include "myform.h"
              MainWindow::MainWindow(QWidget *parent) :
              QMainWindow(parent),
              ui(new Ui::MainWindow)
              {
              ui->setupUi(this);
              myForm = new myform;
              connect(ui->pushButton , SIGNAL(clicked()) , this , SLOT(newForm()));
              }
              void MainWindow::newForm(){
              MainWindow::myForm->str = "This str changed in main window class ";
              QString str2 = MainWindow::myForm->str ;
              MainWindow::myForm->label->setText(str2);
              myForm->show();
              }
              @
              myform.h
              @
              #include "ui_myform.h"
              class myform : public QWidget , public Ui_Form
              {
              public:
              myform( QWidget * parent = 0, Qt::WindowFlags f = 0 );
              QString str ;
              };
              @
              myform.cpp
              @
              myform::myform( QWidget *parent, Qt::WindowFlags f ) :
              QWidget( parent, f )
              {
              setupUi( this );
              str = "nothing";
              }
              @

              Real Eyes Realize Real Lies .

              1 Reply Last reply
              0
              • M Offline
                M Offline
                mohsen
                wrote on 26 Apr 2012, 05:50 last edited by
                #7

                p{direction: rtl; text-align:right}. اگر متغیر ها Private هستن بهتره از Signal و Slot استفاده کنی. در غیر اینصورت میتونی کلاس رو بصورت Pointer در Constructor فرم دیگه ارسال کنی و با include کردن header کلاس به اجزاء public کلاس دسترسی داشته باشی.

                1 Reply Last reply
                0
                • B Offline
                  B Offline
                  bs994
                  wrote on 28 Apr 2012, 17:36 last edited by
                  #8

                  p{direction:rtl; text-align:right}. محسن جان چطوری میشه با سیگنال و اسلات عضو private یک کلاس رو از طریق یک کلاس دیگه دسترسی پیدا کرد ؟
                  یه توضیح مختصر می دی ؟
                  ممنون

                  Real Eyes Realize Real Lies .

                  1 Reply Last reply
                  0
                  • M Offline
                    M Offline
                    mohsen
                    wrote on 29 Apr 2012, 05:07 last edited by
                    #9

                    p{direction:rtl; text-align:right}. بطور کلی به هیچ یک از اشیاء private یک کلاس نمیشه دسترسی داشت ولی با پیاده سازی یک slot public میشه به اونها اطلاعات push کرد و یا گرفت. چیزی شبیه به setter و getter ها

                    1 Reply Last reply
                    0
                    • B Offline
                      B Offline
                      bs994
                      wrote on 29 Apr 2012, 17:55 last edited by
                      #10

                      @Mohsen : TNX

                      Real Eyes Realize Real Lies .

                      1 Reply Last reply
                      0
                      • S Offline
                        S Offline
                        silver
                        wrote on 29 Apr 2012, 19:46 last edited by
                        #11

                        p{direction:rtl; text-align:right}. ممنون محسن جان
                        مصطفی جان ممنون بابت کدت اما نتونستم کامپایلش کنم میشه کد رو برام آپلود کنی؟

                        p{direction:rtl; text-align:right}. توی این خط

                        @class myform : public QWidget , public Ui_Form@

                        p{direction:rtl; text-align:right}. خطا داشتم که با این جایگزینش کردم
                        @class myform : public QWidget , public Ui_myform@

                        p{direction:rtl; text-align:right}. این رو هم نفهمیدم
                        @myform::myform( QWidget *parent, Qt::WindowFlags f ) :
                        QWidget( parent, f )@

                        p{direction:rtl; text-align:right}. اون f چیه

                        Linus Torvalds –
                        Software is like sex: it’s better when it's free.

                        1 Reply Last reply
                        0
                        • B Offline
                          B Offline
                          bs994
                          wrote on 30 Apr 2012, 04:56 last edited by
                          #12

                          p{direction:rtl; text-align:right}. علی من کد و تو ویندوز نوشتم
                          کلا باید برای این کار اون عضوی که می خوای مثلا member1 که تو کلاس دومی هست باید public باشه تا بتونی از طریق کلاس دیگه بهش دسترسی داشته باشی

                          Real Eyes Realize Real Lies .

                          1 Reply Last reply
                          0
                          • S Offline
                            S Offline
                            silver
                            wrote on 30 Apr 2012, 07:49 last edited by
                            #13

                            p{direction:rtl; text-align:right}. ممنون عزیزم
                            فقط نگفتی کار اون f و public Ui_Form چیه

                            p{direction:rtl; text-align:right}. راستی کسی توی اصفهان هست که بتونه یه کلاس Qt برای ما بذاره

                            Linus Torvalds –
                            Software is like sex: it’s better when it's free.

                            1 Reply Last reply
                            0
                            • B Offline
                              B Offline
                              bs994
                              wrote on 30 Apr 2012, 08:51 last edited by
                              #14

                              p{direction:rtl; text-align:right}.
                              https://github.com/bs994/example1
                              اینجا سورس اصلی رو اپ کردم
                              Public Ui_Form :
                              اونو واسه این گذاشته بودم که بتونم از تو کلاس mainWindow به ویجت های کلاس فرمم دسترسی مستقیم داشته باشم
                              QT::WindowFlags :
                              http://doc.qt.nokia.com/4.7-snapshot/widgets-windowflags.html

                              Real Eyes Realize Real Lies .

                              1 Reply Last reply
                              0
                              • S Offline
                                S Offline
                                silver
                                wrote on 30 Apr 2012, 16:22 last edited by
                                #15

                                p{direction:rtl; text-align:right}. ممنون بابت آپلود کد
                                مگه اسم کلاست myform نبود پس چرا از Ui_myform استفاده نکردی؟ این همون خطاییه که به من داد

                                Linus Torvalds –
                                Software is like sex: it’s better when it's free.

                                1 Reply Last reply
                                0
                                • B Offline
                                  B Offline
                                  bs994
                                  wrote on 30 Apr 2012, 16:44 last edited by
                                  #16

                                  p{direction:rtl; text-align:right}. خواهش میکنم
                                  اون Ui_Form برای این بود که من تو دیزاینر فرمی که طراحی کرده بودم ObjectName ش Form بود به اسم کلاس ربط نداشت
                                  این کدی هم که آپ کردم همون کد قبلی نیست ولی اون کاری که میخوای و بهتر انجام میده

                                  Real Eyes Realize Real Lies .

                                  1 Reply Last reply
                                  0
                                  • S Offline
                                    S Offline
                                    silver
                                    wrote on 30 Apr 2012, 19:16 last edited by
                                    #17

                                    p{direction:rtl; text-align:right}. این کدی که دادی رو یه فرم براش ساختم و اسلات newDialog2() رو بهش اضافه کردم تا کار کرد
                                    ممنون کارم راه افتاد باید برم ببینم میتونم رو برنامه خودم ازش استفاده کنم یا نه
                                    لطف کردی :)

                                    Linus Torvalds –
                                    Software is like sex: it’s better when it's free.

                                    1 Reply Last reply
                                    0
                                    • S Offline
                                      S Offline
                                      silver
                                      wrote on 1 May 2012, 08:30 last edited by
                                      #18

                                      p{direction:rtl; text-align:right}. خب نصف مشکل حل شد
                                      فقط یه چیز برای برگشت ارتباط باید چه کرد؟
                                      مثلا توی برنامه شما اگه بخوام با کلیک روی لیبل توی ویجت یه چیزی توی مین ویندو مثل متن دکمه رو عوض کنم چظور؟
                                      برای ارتباط دوطرفه راهی پیدا نکردم

                                      p{direction:rtl; text-align:right}. البته این کارها رو کردم ولی به نتیجه ای نرسیدم
                                      اول توی MainWindow یه اسلات برای تغییر متن دکمه گذاشتم
                                      بعد یه سیگنال کلیک برای لیبل توی myForm که همون ویجت دوم باشه تعریف کردم

                                      p{direction:rtl; text-align:right}. این که کار نمیده
                                      Mainwindow::changeBtnText();

                                      p{direction:rtl; text-align:right}. نمیشه هم دوباره توی myForm یه شیء جدید از MainWindow ساخت.

                                      Linus Torvalds –
                                      Software is like sex: it’s better when it's free.

                                      1 Reply Last reply
                                      0
                                      • B Offline
                                        B Offline
                                        bs994
                                        wrote on 1 May 2012, 13:24 last edited by
                                        #19

                                        p{direction:rtl; text-align:right}. فرقی نمیکنه از هر کلاسی اگه بخوای به یه عضو کلاس دیگه دسترسی داشته باشی باید اون عضو public باشه و این که یک شی باید ازش بسازی
                                        بدون شی دسترسی هم وجود ندارد

                                        Real Eyes Realize Real Lies .

                                        1 Reply Last reply
                                        0
                                        • S Offline
                                          S Offline
                                          silver
                                          wrote on 3 May 2012, 15:23 last edited by
                                          #20

                                          p{direction:rtl; text-align:right}. خب من از راه سیگنال و اسلات تونستم یه کارایی بکنم
                                          باید توی فرم اول یه ارتباط برقرار کنم بین یه سیگنال از فرم دوم و یه اسلات از فرم اول
                                          این طوری هم متغیرها private میمونن و هم نیازی نیست دوباره توی فرم دوم یه شیء از فرم اول بسازیم

                                          p{direction:rtl; text-align:right}. اما برنامه خودم نمیدونم چرا زمان اجرا کردن فرم دوم هنگ میکنه و مینویسه یه خطای غیرمنتظره رخ داده
                                          از توی Debugger هم چیزی نفهمیدم

                                          p{direction:rtl; text-align:right}. مصطفی جان میشه یه نگاهی بهش بندازی؟
                                          http://www.mediafire.com/?foc7ybfxrkw08fu

                                          Linus Torvalds –
                                          Software is like sex: it’s better when it's free.

                                          1 Reply Last reply
                                          0

                                          1/31

                                          18 Apr 2012, 08:22

                                          • Login

                                          • Login or register to search.
                                          1 out of 31
                                          • First post
                                            1/31
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • Users
                                          • Groups
                                          • Search
                                          • Get Qt Extensions
                                          • Unsolved