تبلیغات :
خرید لپ تاپ استوک
ماهان سرور
آکوستیک ، فوم شانه تخم مرغی ، پنل صداگیر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




صفحه 5 از 7 اولاول 1234567 آخرآخر
نمايش نتايج 41 به 50 از 65

نام تاپيک: برنامه نویسی ویژوال در لینوکس (Qt Programing)

  1. #41
    اگه نباشه جاش خالی می مونه Cris_Y's Avatar
    تاريخ عضويت
    Apr 2007
    پست ها
    246

    پيش فرض

    dare halam az qt beham mikhore!
    avalan ke faghat .pro ro dasti sakhte boodam. ba filei ke khodesh misaze faghi nadasht
    badam emrooz sob ye dor dige make kardam dar kamale taajob error nadad! dar hali ke 3 rooze har 5min daram make mikonam! akhe chera?!!!
    badam hala eshtebah az man boode ya shoma man makefile.debug va release o ferestadam na makefile o. fekr kardam oona ro mikhayn
    bazam mamnoon!
    va baraye bare 100om: mishe tamrin bezarin? albate agar momkene!

  2. #42
    پروفشنال a.toraby's Avatar
    تاريخ عضويت
    Oct 2006
    محل سكونت
    Tehran
    پست ها
    971

    پيش فرض

    dare halam az qt beham mikhore!
    avalan ke faghat .pro ro dasti sakhte boodam. ba filei ke khodesh misaze faghi nadasht
    badam emrooz sob ye dor dige make kardam dar kamale taajob error nadad! dar hali ke 3 rooze har 5min daram make mikonam! akhe chera?!!!
    badam hala eshtebah az man boode ya shoma man makefile.debug va release o ferestadam na makefile o. fekr kardam oona ro mikhayn
    bazam mamnoon!
    va baraye bare 100om: mishe tamrin bezarin? albate agar momkene!
    خوب ببین عزیز کامپیتور که خودش عشقی یه کاری نمی کنه. مطمئن باش یه جای کار داری سوتی میدی. مثلاً من اصلاً نمی ونم makefile.o چیه؟؟ من که همچین چیزی هیچ وقت ندیدم. این فایلی هم ه گذاشتم makefile.release هستش نه makefile.o. به تفاوتشون نگاه کن. ببین مال تو یه مشت فایل عجیب غریب آورده تو کامپایل در صورتی که makefile من 180 خط بیشتر نیست. من اصلاً سر در نمیام چی کار کردی. توی qtforum.org هم کسی نفهمید چی کار کردی حالا خودتو ناراحت نکن.
    در مورد تمرین هم چشم،می زارم. به زودی

  3. #43
    اگه نباشه جاش خالی می مونه Cris_Y's Avatar
    تاريخ عضويت
    Apr 2007
    پست ها
    246

    پيش فرض

    akhe koja! hata qmake ham nazadam faghat make! man kei goftam makefile.o? .o nadare yani shoma hamchin chizi nadidin?!! badam man kari nakardam qmake file a ro sakhte pas moshkel nemitoone in bashe.
    bazam mamnoon.

  4. #44
    پروفشنال a.toraby's Avatar
    تاريخ عضويت
    Oct 2006
    محل سكونت
    Tehran
    پست ها
    971

    پيش فرض

    akhe koja! hata qmake ham nazadam faghat make!.


    ببخشید منظورتون چیه از ین جمله؟؟ بالا خره شما qmake زدی یا نزدی؟ منو گیج کردی بدون qmake که نمیشه. یه بار از اول شروع می کنیم. شما یه فولدر بساز به اسم clickcount بعد سه تا فایل برنامه رو بزار توش . بعدش هم به ترتیب سه تا دستور زیر رو اجرا کن.
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    Last edited by a.toraby; 14-08-2007 at 13:26.

  5. #45
    اگه نباشه جاش خالی می مونه Cris_Y's Avatar
    تاريخ عضويت
    Apr 2007
    پست ها
    246

    پيش فرض

    oh sorry bad goftam. manzooram in bood ke oon barname ke dorost shod ro dobare qmake nakarde boodam. hamoon qmake bare aval bood . yani makefile ha avaz nashode boodan. va man faghat dobare makesh kardam!
    chandta soal:
    avalan ke tavabei mesle clicked() va setGeometery() ozve che classian?
    dige ham inke metody baraye get value kardan az ye spinboz ya slider ya... vojoud dare?

    merci

  6. #46
    پروفشنال a.toraby's Avatar
    تاريخ عضويت
    Oct 2006
    محل سكونت
    Tehran
    پست ها
    971

    پيش فرض

    متد clicked یکی از سیگنال های Qt هستش که در کلاس QAbstractButton تعریف شده. حتی می ونی بری ببینی چه جوری کار می کنه. کلاس QAbstractButton که همون کلاسی هستش که QPushButton ازش وراثت گرفته. توجه داشته باش که QAbstractButton یک کلاس Abstract هستش و نمیشه از روش شیئی تولید کرد. ولی QPushButton این متد رو از کلاس پایه خودش یعنی همون QAbstractButton به ارث برده. تو ای برنامه میشه از pressed() هم به جای clicked() استفاده کرد.

    متد setGeometry هم متعلق به کلاس QWidget هستش دیگه . به این ترتیب تمام widget هایی که شما درست می کنی می تونن دارای سایزهای مختلفی باشند. یادته هست که QPushButton هم در نهایت یکی از فرزندان QWidget هست.

    در مورد slider و spinbox هم توابع setValue و valueChanged همین کاری که شما می خای می کنن دیگه. دقیقاً تو برنامه همین کاربرد آموزش داده شده. این توابع مقدار یک متغیر private به اسم value رو در دسترس قرار می دن. برای هر دو کلاس slider و spinbox مشترک هستن.

  7. #47
    اگه نباشه جاش خالی می مونه Cris_Y's Avatar
    تاريخ عضويت
    Apr 2007
    پست ها
    246

    پيش فرض

    agar dorost fahmide basham setvalue meghdare slider ro set mikone va valuechanged neshoon mide ke aya meghdar avaz shode ya na. darvaghe ye event ro neshoon mide. vali ina hich kodoom neshoon nemidan ke meghdare slider chie. yani nemitoonim meghdaro begirim o masalan ye jaye dige azash estefade konim.

  8. #48
    پروفشنال a.toraby's Avatar
    تاريخ عضويت
    Oct 2006
    محل سكونت
    Tehran
    پست ها
    971

    پيش فرض

    اگه دقت کنی می بینی که هر دو این توابع یک آرگومان از نوع int دارن. که همون مقدار مورد نظر هستش. وقتی سیگنال valuechanged رو به اسلات setvalue دیگری متصل می کنیم. این آرگومان مقدار درون متغیر value رو انتقال می ده

    Last edited by a.toraby; 15-08-2007 at 05:31.

  9. #49
    اگه نباشه جاش خالی می مونه Cris_Y's Avatar
    تاريخ عضويت
    Apr 2007
    پست ها
    246

    پيش فرض

    ghasd edame dadan nadarin?!

  10. #50
    پروفشنال a.toraby's Avatar
    تاريخ عضويت
    Oct 2006
    محل سكونت
    Tehran
    پست ها
    971

    پيش فرض درس ششم

    آدرس درس قبلی

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

    ایجاد دیالوگ ها
    در این فصل با نحوه ایجاد دیلوگ ها آشنا می شویم. دیالوگ ها فرم هایی هستند که ارتباط بین کاربر و برنامه را میسر می سازند، از همین رو نام محاوره را برای آن ها برگزیدیم.
    دیالوگ ها گزینه ها و انتخاب های مربوط به نرم افزار را در اختیار کاربر قرار می دهند. اطلاعاتی را به کاربر نشان می دهند یا اطلاعات خاصی را از او درخواست می کنند. بسیاری از دیالوگ ها خیلی ساده هستند و تنها شامل یک یا دو دکمه Cancel و Ok می باشند اما همه آن ها اینطور نیستند. به عنوان مثال می توان به ماشین حساب ویندوز اشاره کرد که تنها از یک دیالوگ تشکیل شده است.
    اغلب نرم افزارها شامل یک پنجره اصلی همراه با یک نوار منو و نوار ابزار هستند. اما در عین حال می توان نرم افزاری را ایجاد نمود که فقط شامل یک دیالوگ باشد. این نوع از نرم افزار ها بر پایه دیالوگ توسعه داده می شوند.
    دیالوگ ها را می توان از طریق کدنویسی یا با استفاده از نرم افزار Qt designer ایجاد نمود. ابزار Qt designer راه حل سریع تری برای طراحی فرم های یک برنامه می باشد. اما در هر حال، بدون فراگیری جزئیات، نمی توان کار را به خوبی پیش برد. با کدنویسی، قابلیت های بیشتری را می توانید به کار ببرید.
    از آن جا که کلاس های توسعه پذیر زیادی بر اساس دیالوگ ها وجود دارند، روش های زیادی نیز برای پیاده سازی دیالوگ ها در اختیار برنامه نویس قرار دارند. علاوه بر این ها می توان از کلاس های پایه برای ساخت دیالوگ های نسبتاً ساده استفاده کرد. در این بخش با روش های گوناگون ایجاد دیالوگ ها و معایب و مزایای هر کدام از آن ها آشنا خواهیم شد.
    یک دیالوگ ساده
    حال موقع آن رسیده است تا با یک کلاس جدید آشنا شویم. نام این کلاس QDialog است. شما می توانید از این کلاس برای ساخت دیالوگ ها استفاده کنید، آن را برای آرایش نحوه قرارگیری Widget های ساده در کنار هم نیز به کار خواهید برد. کلاس QDialog خودش به تنهایی فقط یک پنجره خیلی ساده و خالی است که البته می توان Widget های زیادی را داخل آن قرار داد.
    ابتدا با مطرح کردن یک مثال ساده روش ایجاد یک دیالوگ را بررسی می کنیم. در این مثال قصد داریم دیالوگ Find در KDE را ایجاد نماییم. شکل این دیالوگ را در زیر مشاهده می کنید.


    برای این کار ابتدا کلاسی تحت عنوان finddialog ایجاد می کنیم. برنامه سه فایل جداگانه به نام های finddialog.h ، finddialog.cpp و main.cpp خواهد داشت. دو فایل اول حاوی تعاریف مربوط به کلاس finddialog می باشند. و فایل سوم شامل تابع main و محل شروع اجرای برنامه می باشد.
    در زیر محتویات فایل finddlialog.h را مشاهده می کنید:

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

    از آنجا که کلاس مذکور ویژگی های خود را از کلاس QDialog به ارث می برد باید قبل از هر کاری فایل Qdialog.h را وارد برنامه کنیم. این عمل در خط سوم انجام شده است.
    خط چهار تا هفتم برنامه شامل پیش اعلان کلاس های مورد نیاز در پیاده سازی کلاس finddialog می باشند. می توانستیم به جای استفاده از پیش اعلان، فایل های مربوط به این کلاس ها را با استفاده از دستور include مورد استفاده قرار دهیم، اما از آن جا که تمام متغیرهای درون تعریف کلاس از نوع اشاره گرها می باشند و می توان از پیش اعلان استفاده نمود ما این روش را برگزیدیم، زیرا با به کارگیری این روش سرعت کامپایلر بهبود میابد.
    در خط هشتم تعریف کلاس را آغاز کرده ایم. همان طور که می بینید عمل وراثت به صورت عمومی انجام می شود و QDialog کلاس والد است. ماکروی Q_OBJECT هم، که طبق گفته های فصل قبل باید فراخوانی شود. در خط 12 برنامه، الگوی سازنده کلاس را بیان کرده ایم.
    دو متد findNext و findPrev نیز سیگنال هایی هستند که یکی از آن ها، بسته به فعال یا غیر فعال بودن گزینه search backward، برای اسلات findClicked ارسال خواهند شد. این سیگنال ها زمانی ارسال می شوند که دکمه find فشرده شود.
    حال به جزئیات درون فایل fiddialog.cpp می پردازیم که شامل پیاده سازی و اجرای کامل کلاس finddialog می باشد.

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

    همانطور که می بینید در اولین قدم، فایل های مربوط به کلاس های مورد نیاز را به همراه فایل هدری که خودمان ایجاد کرده ایم، وارد برنامه می کنیم.
    در خط هفتم تعریف دقیق متد سازنده کلاس آغاز می شود.
    تابع setWindowTitle، متنی که هنگام اجرای برنامه در titlebar پنجره ظاهر می شود، تعیین می کند. در نسخه های قبلی Qt این کار را تابع setCaption انجام می داد. تابع tr به شما این امکان را می دهد که نرم افزار خود را با استفاده از ابزار Qt Translator به زبان های مختلف ترجمه کنید. در این مورد در فصلی جداگانه توضیح داده خواهد شد.
    حال نوبت آن است که تمام اجزای پنجره find را ایجاد نماییم. این اجزاء را در خطوط 11 تا 20 ساخته ایم و تنظیمات لازم را انجام داده ایم.
    با کمی دقت متوجه می شوید که تمام اشیائی که ایجاد می شوند فرزند شیئ جاری (به کلمه this توجه کنید) هستند. بدین ترتیب تمام این اشیاء درون شیئ والد، یعنی شیئ ساخته شده از روی کلاس finddialog قرار خواهند داشت. حال فقط کافی است که مکان قرارگیری آن ها را تعیین کنیم. این کار را در خطوط 26 تا 41 برنامه انجام داده ایم. با این توابع در فصل آینده آشنا خواهید شد. در حال حاضر برای این که تأثیر خطوط فوق را در اجرای برنامه درک کنید می توانید آن ها را حذف کنید و برنامه را کامپایل کنید. خواهید دید که تمام اشیای ایجاد شده رو هم میفتند و قابل تشخیص نیستند.
    در خط پانزدهم به عبارتSearch &backward توجه کنید. علامت & باعث می شود، در اثر فشردن دکمه Alt+B از روی صفحه کلید این گزینه فعال یا غیرفعال شود. به این کلیدها اصطلاحاً کلیدهای شتاب دهنده می گویند.
    نکته قابل توجه دیگری که در این برنامه وجود دارد، تابع setDefault می باشد. این تابع باعث می شود در ابتدای اجرای برنامه شیئ مربوطه در حالت جذب باشد. مثلاً در این برنامه با فشردن کلید Enter دکمه findButton عمل خواهد کرد. بلافاصله در خط بعدی تابع setEnabled را با پارامتر false فراخوانی کرده ایم. این تابع باعث می شود دکمه مورد نظر غیرفعال شود. این حالت از روی ظاهر خاکستری رنگ دکمه مشخص خواهد بود.
    تابع setBuddy که در خط 13 قید شده است باعث می شود هنگامی که کاربر کلید شتاب دهنده Alt+W را فشار می دهد focus صفحه کلید بطور اتوماتیک به شیئ lineEdit منتقل شود.
    بعد از ایجاد تمام این اجزاء، نوبت آن است که اتصالات بین آن ها را ایجاد کنیم. این کار را در خطوط 20 تا 25 برنامه انجام داده ایم.
    به عنوان مثال خط 20 و 21 را توضیح می دهیم. در این جا سیگنالی از طرف شیئ فرزند به شیئ والد فرستاده می شود. به این ترتیب که هنگام تغییر متن درون lineEdit سیگنال textChanged برای شیئ جاری فرستاده می شود و اسلات enableFindButton را فراخوانی می کند. آرگومان این تابع حاوی رشته جدید می باشد. دقت داشته باشید که اسلات موردنظر را در خط 52 تعریف کرده ایم.
    در ضمن در تابع findClicked با نحوه کار با جعبه های انتخابی آشنا می شوید.
    در زیر فایل main.cpp را مشاهده می کنید. تنها کاری که در این جا انجام می دهیم ایجاد یک شیئ از روی کلاس FindDialog است.

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    Last edited by a.toraby; 19-08-2007 at 20:57.

Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •