صفحه 1 از 2 12 آخرینآخرین
نمایش نتایج: از شماره 1 تا 10 از مجموع 11
Like Tree4نفر پسندیدند

موضوع: Qt (بخوانید کیوت) چیست!؟

  1. #1
    Moderator
    تاریخ عضویت
    2012 November
    ارسال ها
    128
    تشکر
    28
    تشکر شده 173 بار در 77 پست

    Question Qt (بخوانید کیوت) چیست!؟

    من مقاله ای که در زیر می آید را حدودا دو سال پیش نوشتم زمانی که شناختم از کیوت بسیار کمتر از حالا بود و از دو سال پیش تا به حال اتفاقات زیادی برای Qt اتفاق افتاده ، تا جایی که ممکن بود این مقاله را بروز کردم ؛ اما قطعا ممکنه همچنان دچار نواقص زیادی باشه(مشکلاتی همچون فنی ، نگارشی و...) ، در صورت مواجه شدن با اشتباهات تعجب نکنید ، لطفا به من گزارش کنید..

    (در زمان ویرایش آخر این مقاله نسخه ی Qt 5.2.0 منتشر شده است)
    آشنایی با چارچوب کاری
    Qt
    چکیده :
    هدف از تالیف این مقاله ، آشنایی بیشتر خواننده با چارچوب کاری Qt می باشد و سعی شده تا ضمن معرفی کامل این چارچوب کاری ، با سایر چارچوب های کاری مشابه هم مورد مقایسه قرار داده شود تا مزایا و معایب این چارچوب کاری برای خواننده بیشتر مشخص شود.
    کلمات کلیدی :; Nokia; Trolltech Qt ; MFC ; Framwork;Digia

    مقدمه :

    در سال 2001 مایکروسافت[1] چارچوب کاری[2] جدید را به نام دات نت[3] به توسعه دهندگان[4] معرفی کرد در این سال هایی که از قدمت این چارچوب کاری می گذرد به خاطر نقاط قوت این چارچوب کاری ، بزرگترین نقطه ضعف دات نت از چشمان توسعه دهندگان مخفی و هموراه در بین برنامه نویسان محبوب ماند.
    اما در این سال های اخیر که پلتفرم[5] های متنوع تری راهی بازار می شود و این پلتفرم ها با سرعت بیشتر عرضه می شوند بزرگترین ضعف دات نت یعنی عدم پشتیبانی کامل از چند سکویی[6] بیش از پیش به چشم می آید ، این در حالی است که یکی از مهم ترین اهداف مایکروسافت در عرضه دات نت پشتیبانی از چند سکویی بود تا بتواند با جاوا مقابله کند اما در این کاراصلا موفق نبود.
    در سال 1991 هاروارد نورد[7] و آیریک چامبه انگ[8] کار بر روی پلتفرم چند سکویی را آغاز کردند که Qt[9] نام گرفت ،این در حالی است که از همان ابتدا هدف این دو، ساخت پلتفرمی بود که به طور کامل از چند سکویی پشتیبانی کند و به علت این که این نیاز در سال های اخیر بیش از پیش به چشم می آید باعث شد ، Qt مورد توجه بسیاری از توسعه دهندگان قرار بگیرد و همین امر موجب شد تا شرکت نوکیا[10] در سال 2008 شرکت ترول تِک[11] را خریداری کند و باعث شود Qt بیش از پیش شکوفا شود اما در سال 2011-2012 شرکت فنلاندی Digia مجوز تجاری Qt را به طور کامل از نوکیا خریداری نمود و از آن سال تا به حال که این مقاله در حال ویرایش است ، توسعه Qt به عهده ی Digia می باشد.

    Qt چیست؟
    Qt یک چارچوب کاری برنامه نویسی است که به برنامه نویسان این امکان را می دهد تا به راحتی برنامه خود را توسعه دهند.
    این چارچوب کاری از مجموعه ای از کتابخانه ها و سرآیند های نوشته شده به زبان C++ تشکیل شده است.
    در Qt تقریبا برای تمام زمینه ها کلاس هایی در نظر گرفته شده است تا برنامه نویس با سرعت و سهولت بیشتر بتواند برنامه مد نظرش را توسعه دهد ، از جمله این کلاس ها می توان به کلاس ها کار با واسط گرافیکی ، چند رسانه ای ، ابزار های پایگاه داده ، شبکه،چند نخی و... نام برد.
    نکته ای که Qt را از سایر چارچوب های کاری برنامه نویسی جدا می کند این است که تمامی این کلاس ها و کتابخانه ها به صورت کاملا چند سکویی نوشته شده اند تا برنامه های نوشته شده در این چارچوب کاری بتواند در اکثر پلتفرم ها قابل اجرا باشد.
    به همین دلیل اجرای برنامه نوشته شده در سایر پلتفرم ها با کمترین تغییر ممکن در منبع کد[12] امکان پذیر است.
    در Qt می توان با استفاده از زبان های برنامه نویسی متعددی کد نوشت که می توان از C++ ، جاوا[13]، پایتون[14] و... نام برد.
    Qt در پلتفرم های زیادی قابل اجرا است که می توان از Windows، Mac OS ، Linux و سیستم عامل های جاسازی شده[15] نام برد. (به گفته ی Digia در زمان ویرایش این مقاله Qt از 14 پلتفرم مختلف پشتیبانی می کند)
    انواع عرضه شده:
    تاکنون نسخه های متفاوتی از Qt برای پلتفرم متفاوت عرضه شده که می توان به گزینه های زیر نام برد:

    1. Qt/X11 برای خانواده های Linux و Unix
    2. Qt/Mac برای خانوداده های Macintosh
    3. Qt/Windows برای خانواده های Windows
    4. Qt/Jambi برای جاوا

    (در زمان ویرایش این مقاله ، پشتیبانی از توسعه برنامه برای سکو های Android و ios هم به Qt اضافه شده)



    انواع مجوز های Qt:
    Qt در دو نسخه منبع باز[16] و تجاری عرضه می شود ، نسخه تجاری (آزاد) برای هر نوع توسعه نرم افزار است در حالی که نسخه منبع باز برای توسعه نرم افزار در قالب GPL و QPL است.
    البته بعد از خریداری مجوز انتشار Qt توسط شرکت نوکیا از نسخه 4.5 به بعد امکان توسعه در قالب LGPL هم فراهم شده.
    قرداد نام گذاری در Qt:
    کلاس ها و کتابخانه ها در Qt با Q شروع می شوند به طور مثال QPushbutton کلاس دکمه است و تقریبا اکثر نرم افزار هایی که با Qt توسعه داده می شوند از همین قانون نام گذاری برای نام گذاری نرم افزارشان استفاده می کنند مانند QDevelop.
    مشابه این قانون نام گذاری برای نرم افزار های نوشته شده ی تحت میز کار KDE هم وجود دارد.
    محیط های توسعه[17] Qt:
    تا به حال IDE های مختلفی برای کار با این چارچوب کاری تهیه شده ، که به دلیل منبع باز بودن این چارچوب کاری بیشتر این IDE ها توسط علاقه مندان به این چارچوب کاری تهیه شده است.
    مهم ترین IDE، Qt توسط شرکت نوکیا ارائه شده که Qt Creator نام گذاری شده است.
    اما کد نویسی با Qt در محیط های دیگری هم قابل انجام است که می توان به IDE های زیر اشاره کرد:

    • Qdevelop
    • Eclipse در این IDE که یکی از معروفترین IDE ها هم هست می توان با استفاده از افزایه[18] از Qt استفاده کرد.
    • Edyuk
    • Visual Studio در این IDE می توان با استفاده از درافزا[19] از Qt استفاده کرد.





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

    • GCC[20]
    • Mingw (پیاده سازی g++ (GCC C++ Compiler ) برای ویندوز)
    • Msvc[21]


    نرم افزار هایی که با Qt توسعه داده شده:
    تاکنون نرم افزار های بسیار زیادی با استفاده از Qt توسعه داده شده است که مهم ترین آن ها عبارت اند از:

    • Autodesk Maya
    • Google Earth
    • Skype
    • VLC media player
    • Ubuntu Touch
    • Cisco Packet Tracer
    • Autodesk MotionBuilder
    • Adobe Photoshop Album
    • Mathematica
    • و خانواده ی KDE


    مقایسه با سایر چارچوب های کاری:

    بدون شک یک از اهداف هر مقاله ارتباط موضوع مقاله با سایر موضوعات مشابه است به همین دلیل در این مقاله می خواهیم Qt را با سایر چار چوب های کاری ارائه شده مقایسه کنیم.
    اما باید توجه داشته باشیم که مقایساتی که انجام می دهیم ، مقایسه هایی درست و منطقی باشد .
    ما نمی توانیم Qt را با یک زبان برنامه نویسی مقایسه کنیم زیرا Qt یک چارچوب کاری بر روی زبان های برنامه نویسی است و این مقایسه ها کاملا اشتباه است اما گه گاه شاهد این مقایسات اشتباه در دنیای مجازی هستیم.
    در ضمن مقایسه Qt با چارچوب های کاری مانند دات نت و جاوا مقایسه ای منطقی نیست زیرا دات نت و جاوا کد های مدیریت شده[22] تولید می کنند ولی Qt ، کد های محلی سیستم عامل[23] ، همین امر موجب این می شود که هر یک برتری های مطلقی نسبت به هم داشته باشند و نه برتری های نسبی به همین دلیل نمی توانیم بگوییم که کدام نسبت به دیگری ارجعیت دارد زیرا هر کدام برای هدف خاص خود ساخته شدند.
    چنین مقایسه ای مانند مقایسه یک کامیون با یک ماشین سواری است ، که اصلا مقایسه منطقی نیست.
    اما ما در این بخش می خواهیم Qt را با MFC مقایسه کنیم ولی ابتدا باید شناختی را نسبت به MFC پیدا کنیم.

    MFC چیست؟
    MFC یا کلاس های پایه ای مایکروسافت[24] یک چارچوب کاری گرافیکی برای ویندوز است .این چار چوب شی گراست و بیشتر کلاس های این چار چوب کاری با استفاده از Win32 API نوشته شده است و خود Win32 API ها هم با استفاده از C/C++ نوشته شده اند.
    اما مقایسه این دو چارچوب کاری:
    کد نویسی در MFC همیشه نیاز به مستندات[25] و نمونه کد[26] ها دارد که باید همیشه از همان دستور العمل ها استفاده کنید تا به نتیجه مطلوب برسید ، اما شما با استفاده از Qt به راحتی با نگاه به مستندات می توانید بدون هیچ مشکلی بنویسید.
    طراحی تماما شی گرای Qt :
    Qt تماما شی گرا ساخته شده تا برنامه نویس بدون هیچ مشکلی بتواند خیلی سریع برنامه ی خود را توسعه دهد اما MFC از نظر شی گرایی طراحی مناسبی ندارد.
    حلقه پیام ها:
    MFC یک چارچوب کاری کاملا رویداد گراست که برای هر عملی شما نیاز به در یافت پیغام هایی خاص از طرف ویندوز دارید ، استفاده از این پیغام ها در کد نویسی اصلا آسان نیست زیرا هر پیغام برای عمل خاصی برای شما ارسال می گردد در حالی که شما کاملا نمی دانید هر پیغام برای چه عملی نیاز است.
    برای مثال برای تشخیص عمل کلیک شدن روی یک شی شما می بایست پیغام WM_LBUTTONDOWN را دریافت کنید. یا برای استفاده از تایمر می بایست پیغام WM_TIMER را برسی کنید.





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





    (برای دیدن تصویر در اندازه ی مناسب روی تصویر کلیک کنید)










    اما Qt با استفاده از موتور داخلی تولید و مدیریت اشیا این اعمال را بر عهده گرفته تا برنامه نویس بدون نیاز به درگیر شدن با پیغام های سیستم عامل بتواند برنامه خود را توسعه دهد.
    Qt با استفاده از مفاهیم سیگنال ها [27]و اسلات ها[28] این عملیات را انجام می دهد ، این مکانیزم شی را از دریافت پیغام های سیستم عامل بی نیاز می کند.


    پشتیبانی از چند سکویی:
    اما اگر بخواهیم مهم ترین تفاوت این دو چارچوب کاری را نسبت به هم بررسی کنیم می توانیم این را بگوییم که Qt کاملا از چند سکویی پشتیبانی می کند در حالی که MFC فقط برای برای برنامه های تحت ویندوز ساخته شده است.
    این دو چارچوب کاری را می شود از لحاظ های مختلفی مورد مقایسه قرار داد از جمله ، مستند سازی ، تولید اشیا ، مدیریت منبع و... که ما در این مقاله از مقایسه این خصوصیات صرفه نظر می کنیم.
    نتیجه گیری :
    مزایا و معایب این چارچوب کاری را می توان به این صورت بیان کرد :
    مزایا :

    1. پشتیبانی از چند سکویی
    2. تولید کد محلی سیستم عامل که هم باعث سرعت بالای اجرا می شود و هم امنیت کد منبع را بالا می برد.
    3. منبع باز بودن این چارچوب کاری ، که باعث می شود با سرعت بالایی توسعه پیدا کند و خطا های آن بر طرف شود.
    4. پشتیبانی از چندین زبان برنامه نویسی مانند C++ ، جاوا ، پایتون و...
    5. و در نهایت مستند سازی بسیار خوب این چارچوب کاری که به برنامه نویس این امکان را می دهد تا خیلی سریع و راحت مشکل خود را برطرف کند

    معایب :

    1. یکی از بزرگترین معایب این چارچوب کاری بالا بودن قیمت نسخه تجاری ای چارچوب کاری می باشد.
    2. کمبود کامپوننت ها و ویدجت ها که باعث میشه سرعت توسعه کند شود.
    3. با اینکه Qt کاملا از پایگاه داده های مختلف مانند SQL Server پشتیبانی می کند اما بخاطر کمبود ابزار ها و کامپوننت ها مانند ابزار گزارش گیری کامل کار با پایگاه داده ها را سخت می کند.







    منابع:

    1. خود آموز Visual C++.net در 21 روز /دیویس چپمن ؛ مترجم سیلوی داوودیان—تهران موسسه ی فرهنگی هنری دیباگران تهران،1384
    2. Pascal Audox translate by Philips fremy ; 2005/07/03;Impressions on MFC Vs Qt programming
    3. MFC vs Qt
    4. ايتنا - چرا Qt؟
    5. ايتنا - 10 کاربرد Qt که تا به حال نمی‌دانستید!



    [1] Microsoft

    [2] Frame Work

    [3] .Net

    [4] Developers

    [5] Platform

    [6] Cross-Platform

    [7] Harvard Nord

    [8] Eirik chamber Eng

    [9] کیوت

    [10] Nokia

    [11] Troll tech

    [12] Source Code

    [13] Java

    [14] Python

    [15] Embedded OS

    [16] Open Source

    [17] IDE

    [18] Plug-in

    [19] Add-in

    [20] GNU C Compiler

    [21] Microsoft Visual C++

    [22] Managed Code

    [23] Native Code

    [24] Microsoft Foundation Classes

    [25] Documents

    [26] Sample Code

    [27] Signals

    [28] Slots

    موضوعات مشابه:
    Angehngte Grafiken
    • نوع فایل: jpg message_loop.jpg (44.4 کیلو بایت,  این فایل 9 بار دانلود شده است)
    ویرایش توسط returnx : 11th December 2014 در ساعت 12:30 AM
    Shojaee و Tishab این را میپسندند

  2. #2
    Moderator
    تاریخ عضویت
    2012 November
    ارسال ها
    128
    تشکر
    28
    تشکر شده 173 بار در 77 پست
    چند لینک برای شروع کار با Qt :
    سایت رسمی کیوت : Qt - Cross-platform application and UI development framework
    سایت بنیاد متن باز کیوت : Qt Project
    برای دانلود آخرین نسخه کیوت برای سکوی مورد نظر به این لینک مراجعه کنید :Download Qt, the cross-platform application framework | Qt Project
    سرویس Cloud به همراه API برای کیوت : https://engin.io/
    برای دیدن لیست نرم افزار هایی که با کیوت توسعه داده شده اند میتونید به این لینک مراجعه کنید(البته ممکن هست کاملا بروز نباشه ، اما خوبه ) :Category:Software that uses Qt - Wikipedia, the free encyclopedia
    شبکه کارشناسان کیوت ایران : QtExperts شبکه برنامه نویسان کیوت انجمن تخصصی کارشناسان کیوت در ایران

    ویرایش توسط returnx : 29th December 2013 در ساعت 11:01 PM
    Shojaee این نویسه را میپسندد.

  3. #3
    Moderator
    تاریخ عضویت
    2012 November
    ارسال ها
    128
    تشکر
    28
    تشکر شده 173 بار در 77 پست
    چند نکته برای شروع کار با کیوت :
    از نسخه ی Qt 5.0 به بعد آخرین نسخه ی Qt Creator IDE در Package نصب کتابخانه ی های Qt موجود می باشد و بصورت پیش فرض نصب میشه ، اما در نسخه های قبل باید Qt Creator را به صورت جداگانه نصب کنید...
    برای نسخه های ویندوزی بهتر است کتابخانه های مربوط به کامپایلر mingw دانلود و نصب شود چرا که این کامپایلر همراه کتابخانه ها به صورت پیش فرض نصب می شود ، اما کتابخانه ها برای کار با msvc باید حتما Visual Studio را نصب کنید تا کامپایلر msvc نصب شود...

    برای کتابخانه های لینوکس شما نیاز دارید کامپایلر g++ نصب باشد برای نصب کل GCC از Repository میتونید از دستور زیر استفاده کنید :
    بهتر از قبل از آن Repository را با دستور زیر بروز کنید :
    کد:
    sudo apt-get update
    کد:
     sudo apt-get install build-essential
    برای نصب فقط g++ :
    کد:
      sudo apt-get install g++
    توجه کنید که از اونجایی که Qt از نسخه 5.0 به بعد برای رندر برنامه های GUI در لینوکس از OpenGL کمک میگیره باید OpenGL هم نصب باشه که میتونید با دستور زیر نصب کنید :
    کد:
    sudo apt-get install libglu1-mesa-dev
    در ویندوز از پروژه Angle استفاده میشه که مبدلیست برای OpenGL به Directx ، به همین دلیل نیازی به نصب OpenGL در ویندوز نیست...

    بعد از نصب برای مطالعه مستندات کلاس ها و نحوه استفاده از کلاس های Qt از نرم افزار Qt Assistant استفاده کنید که در مسیر نصب کیوت موجود می باشد برای مثال :
    C:\Qt\Qt5.1.0\5.1.0\mingw48_32\bin

    ویرایش توسط returnx : 4th January 2014 در ساعت 08:16 PM
    Shojaee این نویسه را میپسندد.

  4. #4
    Moderator
    تاریخ عضویت
    2012 November
    ارسال ها
    128
    تشکر
    28
    تشکر شده 173 بار در 77 پست
    همونطور که در مقاله (پست 1) گفته شد ، Qt یک Framework می باشد و قادر به پشتبانی از زبان ها و کامپایلر های زیادی برای توسعه می باشد ، شما برای توسعه به کمک Qt میتونید بجز زبان های C++ و QML که جز اصلی Qt می باشند از زبان هایی مثل Ada,Python,Basic,C#,PHP,Java و... هم برای توسعه پروژه استفاده کنید ، برای دیدن توضیحات و نحوه Bind کردن این Framework با دیگر زبان ها میتونید به این لینک بروید :
    Category:LanguageBindings | Qt Wiki | Qt Project
    قابل بذکر است ، که به گفته ی توسعه دهندگان Qt بهترین گزینه همان C++ می باشد...


  5. #5
    SUPERMODERATOR
    تاریخ عضویت
    2012 May
    ارسال ها
    430
    تشکر
    750
    تشکر شده 961 بار در 440 پست
    نوشته های وبلاگ
    4

    Qml

    در صورت امکان درباره زبانqml اینجا یا در یه تاپیک دیگه توضیح بده که کاربردش بیشتر کجاست و کلا چیـــــــــــــه..؟!

    سه جمله برای کسب موفقیت: ..... 1. بیشتر از دیگران بدانید.....2. بیشتر از دیگران کار کنید......3. کمتر انتظار داشته باشید. ( ویلیام شکسپیر )

  6. #6
    Moderator
    تاریخ عضویت
    2012 November
    ارسال ها
    128
    تشکر
    28
    تشکر شده 173 بار در 77 پست
    QML یک زبان برنامه نویسی برمبنای Java Script و CSS است و اصلی ترین بخش از تکنولوزی Qt Quick هست ، که به برنامه نویس کمک می کنه ، اینترفیس برنامه ی خودش را به راحتی و با انعطاف پذیری بالا توسعه بده...
    این زبان دارای چندین Element (عنصر) پایه ای برای طراحی است و با استفاده از این عنصر های پایه ای ، مثل مستطیل ها ، متن ها ، انیمیشن ها و... میشه عناصر پیچیده تر درست کرد...
    تعریف عناصر در QML به شکل ، درختی هست و مثل همیشه ، از ساختار پدر و فرزندی پشتیبانی میکنه(کلا Qt به روابط خانوادگی اهمیت زیادی میده) ...
    در واقع Qt Quick تکنولوژی است که به شما کمک میکنه برنامه تان را خیلی سریع توسعه بدید در حالی که منطق برنامتون با اینترفیسش تا حد امکان جدا باشه و در ضمن توسعه در Qt Quick طبق مدل Prototype در مهندسی نرم افزار هست...

    اینم مثال ساده ای که من قبلا با QML نوشته بودم(این مثال ساخت یک دکمه و نمایش انیمیشن را در زبان QML نشان میده):
    کد main :
    کد:
    importQtQuick2.0 
    
     
    
     
    Rectangle{ 
    id:screen 
    width:360 
    height:360 
    color:"black" 
    
     
    Image{ 
    id:bg_image 
    width:parent.width 
    height:parent.height 
    anchors.fill:parent 
    source:"pics/test" 
    //opacity:1.0 
    } 
    
     
    
     
    My_button{ 
    id:restart_btn 
    text:qsTr("Restart") 
    x:50 
    y:100 
    visible:true 
    width:0 
    height:0 
    PropertyAnimationonwidth{to:100;duration:1000;loops:Animation.Infinite;easing:Easing.OutBounce} 
    PropertyAnimationonheight{to:35;duration:1000;loops:Animation.Infinite} 
    
     
    } 
    
     
    
     
    Item{ 
    id:container 
    x:screen.width/2;y:screen.height/2 
    anchors.centerIn:parent 
    
     
    
     
    
     
    
     
    Text{ 
    id:main_txt 
    anchors.centerIn:parent 
    text:qsTr("AnimationSampleUseOfQML!!") 
    color:"white" 
    font.underline:true 
    font.pixelSize:32 
    
     
    Text{ 
    id:child_txt 
    text:qsTr("ByMohammadHasanzadeh") 
    color:"white" 
    anchors.top:parent.bottom 
    font.pixelSize:15 
    } 
    
     
    
     
    
     
    SequentialAnimationonfont.letterSpacing{ 
    
     
    loops:Animation.Infinite 
    NumberAnimation{from:0;to:50;duration:3000;easing.type:Easing.InOutQuad} 
    
     
    ScriptAction{ 
    script:{ 
    container.y=(screen.height/4)+(Math.random()*screen.height/2) 
    container.x=(screen.width/4)+(Math.random()*screen.width/2) 
    }//EndScript 
    }//EndScriptAction 
    
     
    
     
    
     
    } 
    
     
    SequentialAnimationonopacity{ 
    id:test 
    loops:Animation.Infinite 
    NumberAnimation{from:1;to:0;duration:2600} 
    PauseAnimation{duration:400} 
    
     
    } 
    /* 
    state:State{ 
    name:"change_visible";when:test.stop() 
    PropertyChanges{ 
    target:restart_btn 
    visible:true 
    
     
    } 
    
     
    } 
    */ 
    } 
    
     
    
     
    
     
    }//EndContainer 
    
     
    }
    کد ساخت دکمه :
    کد:
    //importQtQuick2.0 
    importQtQuick2.0 
    
     
    Rectangle{ 
    
     
    propertystringtext 
    
     
    propertybooluse_gradient:true 
    propertycolorbackcolor:"lightgray" 
    propertycolornomral_gradient_start_color:"darkgray" 
    propertycolornormal_gradient_end_color:"white" 
    propertycolormouse_entered_gradient_start_color:"lightgray" 
    propertycolormouse_entered_gradient_end_color:"white" 
    //signalclicked 
    
     
    id:container 
    width:button_txt.width+20 
    height:button_txt.height+10 
    text:qsTr("Button") 
    border.width:1 
    radius:4 
    smooth:true 
    color:if(use_gradient==false){backcolor} 
    gradient:if(use_gradient==true){normal_gradient} 
    
     
    
     
    //SetButtonCaption: 
    Text{ 
    id:button_txt 
    text:qsTr(parent.text) 
    anchors.centerIn:parent 
    } 
    
     
    
     
    //CreateGradient: 
    Gradient{ 
    id:normal_gradient 
    GradientStop{position:0.0;color:nomral_gradient_start_color} 
    GradientStop{position:1.0;color:normal_gradient_end_color} 
    } 
    
     
    Gradient{ 
    id:on_mouse_entered 
    GradientStop{position:0.0;color:mouse_entered_gradient_start_color} 
    GradientStop{position:1.0;color:mouse_entered_gradient_end_color} 
    } 
    
     
    
     
    MouseArea 
    { 
    id:mouse_area 
    anchors.fill:parent 
    hoverEnabled:true 
    onEntered:{parent.gradient=on_mouse_entered} 
    onExited:{if(use_gradient==true){parent.gradient=normal_gradient}} 
    onClicked:{ 
    
     
    } 
    
     
    } 
    
     
    }
    شما نمونه ساخته شده از دکمه بالا را در تصویر میبنید که در فایل main تعریف شده :

    screen_shot.jpg
    (البته با یک عکس نمیشه ، توانایی های این تکنولوژی را نشان داد ، شما باید خودتون باهاش کار کنید تا کاملا درکش کنید )

    نکته ی جالب در مورد این تکنولوژی این هست که می تونید اینترفیس برنامتون را با QML طراحی کنید و هسته اصلی برنامتون که در واقع منطق برنامه ی شما هست را با C++ بنویسید...
    در ضمن زبان QML جز زبان های Declarative (اعلانی) محسوب میشه...
    از تکنولوژی Qt Quick بیشتر برای طراحی نرم افزار ها برای دستگاه های قابل حمل مثل تبلت ها و گوشی ها استفاده میشه ، البته برای PC هم میشه باهاش برنامه ساخت مثل همین مثال بالا ، البته شما میتونید همین مثال را ببرید در یک تبلت هم اجرا کنید و نتیجه ی خروجی فرق نخواهد کرد با این تفاوت که شی QtQuickApplicationViewer متفاوت خواهد بود...
    نکته ی جالب دیگه اینکه ، از نسخه Qt Quick 2.0 هم ، Object های کنترلی ، مثل Command Button ، Textbox ها که با اونها کاملا آشنایی داریم به QML اضافه شده و شما میتونید ظاهر برنامتون را مثل قبل ولی با استفاده از QML بسازید!!
    و در آخر باید بگم QML تقریبا کاربرد WPF را در دات نت داره ، اما با داستان و ساختاری کاملا متفاوت!!
    قطعا در آینده تاپیکی در مورد این تکنولوژی ایجاد خواهیم کرد ، اما شما برای آشنایی بیشتر میتونید به لینک های زیر برید:
    کتاب آنلاین : http://qmlbook.org/
    فیلم های آموزشی QML : http://qt-project.org/videos#c-86

    ویرایش توسط Hossein : 10th July 2014 در ساعت 08:37 AM دلیل: برای بزرگ شدن عکسی که اپلود شده روش دابل کلیک کنید و تنظیمات رو اعمال کنید.

  7. #7
    بنیانگذار
    تاریخ عضویت
    2010 January
    محل سکونت
    زیر سایه خدا
    سن
    37
    ارسال ها
    1,308
    تشکر
    2,923
    تشکر شده 2,205 بار در 886 پست
    نوشته های وبلاگ
    37
    بسیار عالی .
    شخصا به سی ++ علاقه خاصی دارم و خیلی علاقه دارم بخش Qt خیلی فعالتر از اینی که هست باشه .
    اگه بتونید یه همت کنید و ما رو از دانسته هاتون تو این بخش بهره مند کنید خیلی عالی میشه

    متن پنهان



    توکل بخدا
    http://DeepLearning.ir
    اولین و تنها مرجع یادگیری عمیق ایران


    هرکس از ظن خود شد یار من
    از درون من نجست اسرار من




  8. #8
    Moderator
    تاریخ عضویت
    2012 November
    ارسال ها
    128
    تشکر
    28
    تشکر شده 173 بار در 77 پست
    منم قطعا هدفم همین هست و قطعا سعی می کنم در آینده این بخش پر بار تر کنم...
    اما مشکلی که هست دقیقا نمیدونم کاربرای دیگه دوست دارن چه مطالبی در این تالار قرار بگیره برای همین نمیدونم دقیقا باید از کجا شروع کنم!؟
    اگر دوستان نظراتشون را بگند تا بدونم در چه زمینه هایی مطلب قرار بدم ، خیلی راحت تر میتونم به پر بار تر شدن این بخش کمک کنم...


  9. #9
    بنیانگذار
    تاریخ عضویت
    2010 January
    محل سکونت
    زیر سایه خدا
    سن
    37
    ارسال ها
    1,308
    تشکر
    2,923
    تشکر شده 2,205 بار در 886 پست
    نوشته های وبلاگ
    37
    نقل قول نوشته اصلی توسط returnx نمایش پست ها
    منم قطعا هدفم همین هست و قطعا سعی می کنم در آینده این بخش پر بار تر کنم...
    اما مشکلی که هست دقیقا نمیدونم کاربرای دیگه دوست دارن چه مطالبی در این تالار قرار بگیره برای همین نمیدونم دقیقا باید از کجا شروع کنم!؟
    اگر دوستان نظراتشون را بگند تا بدونم در چه زمینه هایی مطلب قرار بدم ، خیلی راحت تر میتونم به پر بار تر شدن این بخش کمک کنم...

    خیلی ها تا اسم سی ++ میشنون پا به فرار میزارن پشت سرشونم نگاه نمیکنن چه اینکه بخوان وارد گود بشن .
    من نظرم اینه که سیر شروع بشه مخاطبانش خود بخود مشخص میشن. البته اینم بگم که نباید زیاد انتظار داشت بازخورد مناسبی همون اول پیدا بشه
    فعلا اصل رو رو این بزاریم که منی که بلد نیستم هیچی بیام اینجا یه چیزیو یاد بگیرم . خب برای این چی لازم دارم؟
    میشه به این موارد فکر کرد :
    .منابع چیاست؟ چیزی بخوام دانلود کنم از کجا این کارو بکنم؟
    2.دانش اولیه کار با این محیط و ... چیه ؟ چیا باید بدونم ؟ موقع مشکل کجا ها سر بزنم ؟ احیانا قبل از شروع لازمه از بعضی فناور یها و یا مفاهیم اطلاع داشته باشم ؟ اگه آره چی ؟
    3.انتقال تجربه . مثلا درسته که فلان محیط توسعه وجود داره اما فلان محیط توسعه خیلی بهتره فلان نکته مثبت و ... داره . یا مثلا بچه ها اگه میخواین فلان مسیر رو برین بچه ها از مسیر ایکس برین و...
    4.فیلم و ویدئو چیزی هست که منو سریعتر راه بندازه؟
    5.چه ایده هایی وجود داره که مثلا با این من میتونم عملیش کنم ؟ ( برنامه برای اندروید و ios میتونم باهاش بنویسم مثلا!یه یه برنامه بنویسم هم بشه رو ویندوز هم لینوکس هم مک اجراش کرد و الخ )

    6.خب حالا چطوری کد بزنم چطوری شروع کنم ؟

    توکل بخدا
    http://DeepLearning.ir
    اولین و تنها مرجع یادگیری عمیق ایران


    هرکس از ظن خود شد یار من
    از درون من نجست اسرار من




  10. #10
    عضو تازه وارد
    تاریخ عضویت
    2014 December
    ارسال ها
    1
    تشکر
    0
    تشکر شده 0 بار در 0 پست
    با سلام
    میشه عکس گذاشته شده در پست مقاله را با سایز بزرگتر بذارین؟
    هر کاری میکنم نمیتونم این عکسو ببینم
    ممنون ازتون

    ویرایش توسط Pouya : 9th December 2014 در ساعت 12:17 AM دلیل: لطفا مطالب خود را فارسی بنویسید!

 

 
صفحه 1 از 2 12 آخرینآخرین

کاربران برچسب خورده در این موضوع

کلمات کلیدی این موضوع

علاقه مندی ها (Bookmarks)

علاقه مندی ها (Bookmarks)

مجوز های ارسال و ویرایش

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


Powered by vBulletin
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.6.0
Persian Language By Ustmb.ir
این انجمن کاملا مستقل بوده و هیچ ارتباطی با دانشگاه علوم و فنون مازندران و مسئولان آن ندارد..این انجمن و تمامی محتوای تولید شده در آن توسط دانشجویان فعلی و فارغ التحصیل ادوار گذشته این دانشگاه برای استفاده دانشجویان جدید این دانشگاه و جامعه دانشگاهی کشور فراهم شده است.لطفا برای اطلاعات بیشتر در رابطه با ماهیت انجمن با مدیریت انجمن ارتباط برقرار کنید
ساعت 10:44 AM بر حسب GMT +4 می باشد.