رفتن به مطلب
مرجع رسمی سی‌پلاس‌پلاس ایران

جستجو در تالارهای گفتگو

در حال نمایش نتایج برای برچسب های 'کیوت'.



تنظیمات بیشتر جستجو

  • جستجو بر اساس برچسب

    برچسب ها را با , از یکدیگر جدا نمایید.
  • جستجو بر اساس نویسنده

نوع محتوا


آی‌او‌استریم

چیزی برای نمایش وجود ندارد

چیزی برای نمایش وجود ندارد

تالارهای گفتگو

  • انجمن‌های آی او استریم
    • اخبار و اعلامیه‌های سایت
    • اسناد و قوانین مرجع
    • جلسات و دوره‌همی‌های آنلاین
    • پادکست‌های آموزشی
    • معرفی محصولات نوشته شده‌ بومی
    • مرکز نظرسنجی
    • مقالات و اسناد مشاوره‌ای
    • مرکز چالش برانگیز برنامه‌نویسان
    • رمز‌های موفقیت
    • ابزار‌ها و نرم‌افزارهای کاربردی برنامه‌نویسان حرفه‌ای
  • برنامه نویسی در C و ‏++C
    • سوالات عامیانه در رابطه با ++C مدرن
    • کتابخانه‌های استاندارد STL
    • کتابخانه بوست (Boost)
    • کتابخانه کیوت (Qt)
    • کتابخانه‌‌ی SDL
    • کتابخانه‌های گرافیکی Vulkan, OpenGL, Metal, Direct3D
    • کتابخانه‌‌ی OpenCV
    • کتابخانه‌‌ی Cuda
    • کتابخانه‌‌ی OpenMP
    • کتابخانه‌‌ی OpenCL
    • کتابخانه‌های دیگر
    • کامپایلر‌ها
    • کتابخانهٔ SFML
    • ابزار‌ها
  • استارتاپی و کسب‌و‌کار
    • استارتاپ‌ها
    • سرمایه گذاری
    • شتاب دهنده‌ها
    • پارک‌های علم و فناوری و مراکز رشد
    • مصاحبه با استارت‌آپ‌ها
    • قوانین حقوقی
    • داستان‌های موفقیت
    • کارآفرینان و متخصصین
    • مشاوره اجرای کسب‌وکار
    • اخبار حوزه‌ی استارتا‌پی
    • آگهی‌های استخدامی
  • ابزار‌های ساخت و ساز
    • ابزار CMake
    • ابزار QMake
    • ابزار Qbs
    • ابزار Make و Autotools
  • طراحی و توسعه وب
  • طراحی و توسعه وب اپلیکیشن‌ها
    • طراحی و توسعه در Angular
    • طراحی و توسعه در React.JS
    • طراحی و توسعه در Vue.JS
  • طراحی و توسعه موبایل و اِمبِد‌ها و تلوزیون‌ها
    • برنامه نویسی تحت محصولات اپل
    • برنامه نویسی تحت محصولات گوگل
    • طراحی و توسعه تحت محصولات دیگر
  • برنامه‌نویسی سطح پایین و سیستم عامل‌ها
    • سیستم عامل‌های آزاد
    • سیستم عامل‌های تجاری
    • مباحث آموزشی مرتبط با سیستم‌عامل
  • شبکه و اینترنت
    • مباحث و منابع آموزشي
    • سوالات و مشکلات
  • بانک‌های اطلاعاتی
  • برنامه نویسی تحت محصولات اپل
  • برنامه نویسی تحت محصولات مایکروسافت
  • طراحی و توسعه تجربه کاربری (UX) و رابط کاربری (UI)
  • سوالات و مباحث عامیانه
  • سطل آشغال

Product Groups

  • کتاب‌ها و مقالات آموزشی

دسته ها

  • علمی
  • استارتاپی
  • برنامه‌نویسی
    • زبان‌های برنامه نویسی
    • معماری‌ها
  • کامپایلر و مفسر
  • محیط‌های توسعه
  • طراحی و توسعه‌ی وب
  • مجوز‌های نرم‌افزاری
  • فناوری‌ها
    • پردازش تصویر
    • اینترنت اشیاء
    • پردازش ابری (Cloud Computing)
    • چند سکویی (Cross-Platform)
    • بیگ دیتا (Big Data)
    • هوش مصنوعی (AI)
    • سخت افزار
    • نرم‌افزار و اپلیکیشن
    • اینترنت و شبکه
    • رمزنگاری
    • امبد‌ها (Embedded)
  • طراحی
    • تجربه کاربری
    • رابط کاربری

دسته ها

  • عمومی
  • گرافیکی
  • شبکه و ارتباطات

دسته ها

  • کامپایلر‌ها
  • محیط‌های توسعه
  • کتابخانه‌ها
  • ماژول‌ها و پلاگین‌ها
  • محصولات بومی
  • کتاب‌ها و مقالات
  • زبان‌ها و ابزار‌ها
  • طراحی و گرافیک

جستجو در ...

نمایش نتایجی که شامل ...


تاریخ ایجاد

  • شروع

    پایان


آخرین بروزرسانی

  • شروع

    پایان


فیلتر بر اساس تعداد ...

تاریخ عضویت

  • شروع

    پایان


گروه


درباره من


شماره تلفن همراه


شناسه گیت‌هاب


شناسه لینکدین


شناسه پیام رسان


شهر


آدرس پستی

55 نتیجه پیدا شد

  1. کامبیز اسدزاده

    همه چیز در مورد مجوز و شرایط استفاده از کتابخانهٔ Qt

    یکی از مهمترین و پر‌مخاطب‌ترین سوألاتی که در مورد فریم‌ورک کیوت پرسیده می‌شود، شرایط استفاده و مجوز‌های مربوط به آن است؛ از آنجایی که این کتابخانه تحت پشتیبانی یک شرکت تجاری است، برخی از شرایط و قوائدی وضع شده است که در استفاده از آن باید دقت لازم را داشت. در این مقاله من قصد دارم به توضیحات و شفاف‌سازی کامل در این خصوص بپردازم که امیدوارم از آن بهره‌مند شده و به اشتراک بگذارید. بررسی مجوز‌های جامع Qt ابزار Qt، یک چهارچوب قدرتمند برنامه‌نویسی چندسکویی است که انواع مختلفی از مجوزها را ارائه می‌دهد تا به نیازهای متنوع کاربران خود پاسخ دهد. با توجه به تاریخچهٔ غنی‌ای که به آغاز توسعهٔ آن باز می‌گردد، Qt به تدریج به یکی از اصلی‌ترین بازیگران در زمینه توسعه نرم‌افزار تبدیل شده است که در این مقاله به آن اشاره می‌کنیم. Qt تحت چندین گزینه مجوز مختلف قرار دارد که برای توسعه نرم‌افزارهای مختلف مناسب هستند که به صورت زیر تعریف شده‌اند. مجوز تجاری Qt فریم‌ورک کیوت، زیر مجوزهای تجاری مناسبی را برای توسعه نرم‌افزارهای تجاری فراهم کرده است که کاربران نمی‌خواهند کد منبع خود را با دیگران به اشتراک بگذارند یا نمی‌توانند با شرایط نسخه 3 مجوز GNU LGPL (GNU Lesser General Public License) سازگاری یابند. مجوز LGPL Qt این مجوز برای توسعه نرم‌افزارهای Qt مناسب است، تا زمانی که شما می‌توانید با شرایط نسخه 3 مجوز GNU LGPL (یا GNU GPL نسخه 3) سازگار باشید. مجوز بازار Qt (Qt Marketplace) اجزای Qt تحت توافق‌نامه مجوز بازار Qt مناسب برای توسعه نرم‌افزارهای Qt هستند، معمولاً با شرایط مجوز تجاری یا GNU LGPL (یا GNU GPL نسخه 3) برنامه‌ریزی می‌شوند. استفاده از کد، از طریق مجوزهای متن‌باز فریم‌ورک Qt شامل کدهای شخص ثالثی است که تحت مجوزهای خاص متن‌باز از نویسندگان اصلی مجوزدهی شده‌اند. برخی از سوأل و پرسش‌های جامعه و تیم کیوت در رابطه با مجوز‌ها و اهداف آن‌ها در توسعه چرا Qt همچنین زیر مجوز نرم‌افزار متن باز نیز منتشر می‌شود؟ ما به جنبش نرم‌افزار آزاد اعتقاد داریم که استفاده از نرم‌افزار با حقوق وظایف خاصی همراه است. استفاده از مجوزهای نرم‌افزار متن باز، به کاربران چهار درجه اصلی از آزادی را در استفاده از برنامه‌ها یا دستگاه‌های Qt می‌دهد: آزادی اجرای برنامه برای هر هدفی. آزادی مطالعه نحوه عمل برنامه و سازگارسازی آن با نیازهای خاص. آزادی توزیع نسخه‌های کپی شده تا بتوانید به همسایه خود کمک کنید. آزادی بهبود برنامه و انتشار بهبود‌های خود به عموم، تا کل جامعه بهره‌مند شود. این آزادی‌ها غیرقابل مذاکره و مطلق هستند، نمی‌توان آنها را به صورت انتخابی یا جزئی تجربه کرد، شما همچنین موظف به انتقال آنها به کاربران خود هستید. چرا شما توافقی با KDE در مورد مجوزهای خود دارید؟ KDE چیست و تاریخچهٔ Qt و KDE چگونه است؟ توافق بین Qt و KDE دربارهٔ مجوزها، ریشه در تاریخچهٔ مشترک این دو نهاد دارد. KDE (kde.org) مخفف محیط کاری دسکتاپ (Desktop Environment) است که یک جامعهٔ بین‌المللی نرم‌افزار آزاد است و در سال ۱۹۹۶ تأسیس شد. KDE به خاطر محیط کاری Plasma Desktop شناخته می‌شود که به عنوان محیط کاری پیش‌فرض در بسیاری از توزیع‌های لینوکس به کار می‌رود. نرم‌افزارهای KDE بر پایهٔ چارچوب Qt ساخته می‌شوند. در اوایل توسعهٔ Qt، این چارچوب از یک مدل مجوز دوگانه برخوردار بود و کد منبع آن تحت مجوزهای متن باز اختصاصی قابل دسترس بود. با درک اهمیت Qt برای پروژه‌های خود، KDE تلاش کرد تا توافقاتی برای اطمینان از دسترسی به Qt تحت مجوزهای مناسب متن باز، حتی اگر Trolltech (شرکت بنیان‌گذار Qt) به تصرف بشود یا ورشکست شود، به دست آورد. نتیجهٔ این تفاهم، بنیاد آزاد KDE Qt (KDE Free Qt Foundation) تأسیس شد و توافق‌نامه بنیاد آزاد KDE Qt ایجاد شد. بنیاد آزاد KDE Qt یک سازمان با هدف ایمن کردن دسترسی به چارچوب Qt برای توسعهٔ نرم‌افزارهای آزاد و به‌ویژه برای توسعهٔ نرم‌افزارهای KDE است. این بنیاد در ابتدا توسط Trolltech و سازمان غیرانتفاعی حقوقی KDE (KDE e.V.) در سال ۱۹۹۸ تأسیس شد و یک توافق‌نامهٔ مجوز دارد که تأمین می‌کند که Qt برای پلتفرم‌های اصلی دسکتاپ و موبایل تحت مجوزهای LGPLv3 و GPLv3 در دسترس است. این توافق‌نامه در طی سال‌ها چندین بار به‌روزرسانی شده است، عمدتاً به دلیل انجام معاملات مرتبط با Qt یا به‌روزرسانی مجوزها و پلتفرم‌ها. عدم رعایت محدودیت‌های مجوزهای LGPL/GPL چه تبعاتی دارد؟ اگر نرم‌افزاری که از این کتابخانه‌های مجوز متن‌باز استفاده می‌کند، به طور کامل الزامات مجوز را رعایت نکند، شما حق استفادهٔ مجوز و حقوق توزیع مرتبط با آن را از دست خواهید داد. همچنین لازم به ذکر است که در بیشتر کشورها، نقض حقوق نسخهٔ پدیدآورندگان یک نقض تشریعی است، نه نقض قرارداد، و بنابراین تدابیر تشریعی مرتبط با این موضوع اعمال می‌شود. برای کسب اطلاعات بیشتر در مورد GPL، می‌توانید به صفحه FAQ GPL از لینک آن مراجعه کنید. آیا می‌توانم از نسخهٔ متن باز جوامع برای توسعه محصول تجاری خود استفاده کنم؟ این بستگی به نحوهٔ ارائه و ارائهٔ محصول شما دارد. نسخهٔ متن باز Qt اصلی به طور عمده تحت مجوز LGPL نسخه 3 و GPLv2/v3 منتشر می‌شود. شما باید الزامات مجوزهای این گونه را که در زمان استفاده از Qt در محصول خود باید رعایت کنید. تفاوت بین LGPLv2 و LGPLv3 چیست؟ LGPLv3 نسخه فعلی مجوز GNU Lesser General Public License است. LGPLv2.1 یک نسخه قدیمی‌تر است و برای پروژه‌های جدید توصیه نمی‌شود. هر دو مجوز همان هدف را دارند، یعنی حفاظت از آزادی کاربران برای استفاده و اصلاح نرم‌افزار تحت مجوز LGPL. LGPLv3 این هدف را به وضوح بیان می‌کند. شما باید چیز‌هایی را برای کاربر نهایی فراهم کنید تا نسخه اصلاح شدهٔ کتابخانه تحت مجوز LGPLv3 را نصب کرده و نرم‌افزار خود را با استفاده از آن کتابخانه اصلاح شده اجرا کند. در عمل، این به عنوان مثال به موارد زیر اشاره دارد: Tivoization – به وضوح اجازه ندهید دستگاه‌های بسته سازی‌شده ایجاد شود که کاربر نهایی حقوق مجوز LGPL برای کتابخانه‌های متن باز Qt را ندارد. DRM و رمزگذاری سخت‌افزاری – نمی‌توان از این تعهدات برای دور زدن این تعهدات استفاده کرد. انتقام از پتنت نرم‌افزار – جایی که تمام کاربران نرم‌افزار مجوزها را دارند، که این باعث بی‌معنی شدن انتقام از پتنت نرم‌افزارهایی که ممکن است در نرم‌افزار منتشر شده، می‌شود. وظایف من چیستند هنگام استفاده از Qt تحت مجوز LGPL؟ در ابتدا، باید توجه داشته باشید که تمامی ماژول‌های متن باز Qt تحت مجوز LGPLv3 در دسترس نیستند. برخی از ماژول‌ها برای استفاده در نرم‌افزارهای متن باز تحت GPLv3 قرار دارند و برخی از اجزاء توسعه‌یافته توسط شخص ثالث مانند موتور وب Chromium تحت مجوز LGPLv2.1 در دسترس قرار گرفته‌اند. زمانی که از ماژول‌ها و کتابخانه‌های Qt تحت مجوز LGPLv3 استفاده می‌کنید، برخی از وظایفی که باید رعایت کنید به شرح زیر است: هنگام استفاده از نرم‌افزار متن باز، باید از مجوز هر نمونه، قطعه کد منبع، ماژول و کتابخانه‌ای که در پروژه خود استفاده می‌کنید، آگاه باشید و مجوزهای مرتبط را ردیابی کنید. باید کد منبع کامل کتابخانه‌های Qt که استفاده کرده‌اید را به همراه تمام اصلاحات اعمال شده یا اعمال شده، به کاربران یا مشتریان خود ارائه دهید. به عنوان یک گزینه دیگر، می‌توانید پیشنهاد نامه‌ای با دستورالعمل‌هایی در مورد چگونگی دریافت کد منبع ارائه دهید. لطفاً توجه داشته باشید که این باید تحت کنترل شما باشد، بنابراین ارائه یک لینک به کد منبع ارائه‌شده توسط پروژه Qt یا شرکت Qt کافی نیست. مجوز LGPL به شما این امکان را می‌دهد که کد منبع خود نرم‌افزار را به عنوان «کاری که از کتابخانه استفاده می‌کند» خصوصی نگه‌دارید. به طور معمول، در اینجا پیشنهاد می‌شود که از اتصال پویا استفاده کنید (برای کامپایل استاتیک این مورد مجاز نیست و نیاز به تهیهٔ مجوز دارد). کاربر نهایی باید قادر باشد نرم‌افزار شما را با یک نسخه مختلف یا اصلاح‌شده از کتابخانه Qt مجدداً لینک کند. با LGPLv3، به وضوح ذکر شده است که کاربر باید قادر باشد باینری مجدداً لینک‌شده را بر روی دستگاه هدف خود اجرا کند. این وظیفه به شما محول است که کاربر را با همه ابزارهای لازم برای فعال کردن این فرآیند تجهیز کنید. برای دستگاه‌های جاسازی‌شده، این شامل فراهم‌کردن تمام ابزارهایی است که برای کامپایل کتابخانه استفاده‌شده به کاربران مورد نیاز است. برای اجزاء مجوزده LGPLv3، شما موظف به ارائه دستورالعمل‌های کامل در مورد نصب کتابخانه اصلاح‌شده بر روی دستگاه هدف هستید (این با LGPLv2.1 به طور واضح بیان نشده است، اگرچه اجرای برنامه در برابر نسخهٔ اصلاح شدهٔ کتابخانه با هدف اعلام شده در مجوز است). کاربری که از یک برنامه یا دستگاه که از نرم‌افزار متن باز تحت مجوز LGPL استفاده می‌کند، باید از حقوق خود مطلع شود، با ارائه یک نسخه از مجوز LGPL به کاربر نهایی و نمایش اعلان مشهور در مورد استفاده‌ شما از نرم‌افزار متن باز باید اعلام شود. این آزادی‌ها به هیچ وجه توسط شرایط دیگر مجوز گزینشی نمی‌توانند محدود شوند؛ اگر یک برنامه به کلی از تمام وظایفی که در بالا ذکر شده است پیروی نکند، اجازه توزیع آن به هیچ وجه داده نمی‌شود. همچنین باید اطمینان حاصل کنید که از هیچ ماژولی که تحت مجوز GPL استفاده نمی‌کنید. آیا نیاز است که از مجوز LGPL هنگام استفاده از نسخهٔ تجاری Qt نگران باشم؟ به طور معمول، خیر. هنگام استفاده از نسخهٔ تجاری مجوزگذاری شده Qt، ما تقریباً تمامی بخش‌ها را تحت شرایط یک مجوز تجاری ارائه می‌دهیم. هرچند، چندین ماژول در Qt از کد منبع پروژه‌های متن باز شخص ثالث مانند Qt WebEngine استفاده می‌کنند که از پروژه Chromium با مجوز LGPLv2.1 استفاده می‌کند. بنابراین، هنگام استفاده از این ماژول‌ها، شما باید از تعهدات مجوز مرتبط رعایت کنید، در مورد Chromium این موضوع به مجوز LGPLv2.1 اشاره دارد. تمامی ماژول‌ها و وابستگی‌های شخص ثالثی که توسط ماژول‌های مختلف Qt استفاده می‌شوند، در مستندات Qt برای هر نسخه از Qt مستند شده‌اند. به عنوان یک کاربر مجوز تجاری، در عمل، تنها نیاز دارید که به تعهدات مجوز LGPLv2.1 اهمیت بدهید، و تنها اگر از Qt WebEngine استفاده کنید. چه کاری باید انجام دهم؟ مطمئن نیستم که مطابق مجوزهای متن باز هستم؟ از مجوزهای متن باز گیج شده‌ام، چه باید انجام دهم؟ همیشه خوشحال هستیم که با شما درباره وضعیتتان صحبت کنیم، اما ما در جایی نیستیم که مشاوره حقوقی ارائه دهیم. همیشه توصیه می‌شود با یک وکیل که با مجوزهای متن باز آشنا است، تماس بگیرید تا یک بررسی کامل از پروژه شما صورت گیرد و تصمیم گیری شود که آیا شما می‌توانید تمامی تعهدات مجوزهای متن باز مربوطه (مانند LGPLv/GPLv) را انجام دهید یا خیر. مجوز تجاری Qt چگونه کار می کند؟ آیا همه توسعه دهندگان من باید مجوز معتبر Qt داشته باشند؟ در رابطه با مجوز‌های تجاری، هر کاربر Qt باید مجوز تجاری Qt مختص خود را داشته باشد. طراحان رابط کاربری، هنرمندان فنی، توسعه‌دهندگان نرم‌افزار یا مهندسان اتوماسیون تست ممکن است انواع مختلفی از مجوزهای Qt داشته باشند، اما هر فرد باید یک مجوز اشتراک معتبر داشته باشد. آیا می‌توانم کد نوشته‌شده با Qt متن باز را با Qt تجاری مجوزگذاری شده ترکیب کنم؟ خیر. اگر می‌خواهید از Qt متن باز به یک مجوز تجاری مهاجرت کنید، لطفاً با فروشگاه Qt تماس بگیرید. برای این سوال، موارد بیشتری نیز در لینک FAQ مجوزگذاری تجاری Qt وجود دارد. آیا امکان توزیع برنامه‌های توسعه یافته با نسخهٔ متن باز Qt از طریق فروشگاه‌های عمومی وجود دارد؟ هر فروشگاه اپلیکیشن شرایط و مقررات منحصر به فردی دارد که ممکن است با توزیع برنامه‌ها تحت مجوزهای LGPL یا GPL سازگار یا سازگار نباشد. مجوز تجاری Qt با شرایط و مقررات تمامی فروشگاه‌های اپلیکیشن معتبر سازگار است و بنابراین معمولاً بهترین گزینه برای توزیع یک برنامه به صورت منبع بسته در فروشگاه‌های مختلف است. من شروع به توسعه یک محصول با استفاده از نسخهٔ متن باز Qt کرده‌ام، حالا می‌توانم یک نسخهٔ تجاری از Qt خریداری کرده و کدم را تحت آن مجوز قرار دهم؟ بله. پروژه‌های توزیع‌شده تحت نسخهٔ تجاری Qt نیز باید تحت نسخهٔ تجاری Qt توسعه یابند. اگر قبلاً توسعه را با نسخهٔ متن باز Qt شروع کرده‌اید، ما به همکاری برای یافتن یک راه‌حل برای انتقال پایه کد شما از حاکمیت متن باز به مجوز تجاری می‌پردازیم. اگر از ابتدا مطمئن نیستید که از کدام مجوز یا نسخه برای شروع توسعه استفاده کنید، توصیه می‌شود با The Qt Company تماس بگیرید تا بر اساس نیازهای توسعه‌ی خود شما راهنمایی شود. ممکن است در یک برنامه از کتابخانه‌های دارای مجوز LGPLv2.1 و LGPLv3 استفاده کرد؟ بله، امکان استفاده از هر دو نسخهٔ مجوز LGPLv2.1 و LGPLv3 در یک برنامه وجود دارد، به عنوان مثال با استفاده از آن‌ها به عنوان کتابخانه‌های جداگانه به عنوان shared libraries. انجام این کار نیاز به تغییر مجوز در هیچ یک از کتابخانه‌ها ندارد و در صورت نیاز، امکان انتخاب یک مجوز مولد برای برنامه وجود دارد. ماتریس سازگاری GNU نشان می‌دهد که من نمی‌توانم LGPLv2 و LGPLv3 را ترکیب کنم؟ اگر کد LGPLv2.1 و کد LGPLv3 در کتابخانه‌های جداگانه به عنوان shared libraries قرار داده شوند، می‌توانند در یک برنامه استفاده شوند، و شما می‌توانید برنامه خود را با یک مجوز مالکیتی / LGPLv2.1 / LGPLv3 به دلخواه خود مجوزگذاری کنید. در مورد نسخهٔ مجوز LGPL/GPL که شما استفاده می‌کنید، چه کسانی مهم هستند؟ شما، مشتریان شما و کاربران نهایی، مگر اینکه از Qt تحت یک مجوز تجاری استفاده کنید. مجوزهای copyleft مانند LGPL و GPL به این معناست که مجوز با محصول شما به مشتریان و کاربران یا راه‌حل شما همراه می‌شود. با توجه به تمامی توضیحات موجود، به طور خلاصه چه زمانی نیاز به تهیهٔ مجوز‌های کیوت داریم؟ تهیهٔ مجوز کتابخانه Qt بستگی به نوع کاربرد و نیازهای پروژه دارد. جوانب مختلفی که تعیین می‌کنند چه زمانی نیاز به مجوز Qt داریم و چه مواردی ممکن است بدون نیاز به مجوز باشند. استفادهٔ شخصی: نیاز به مجوز: اگر برنامه‌نویس قصد استفاده از Qt را برای توسعهٔ پروژهٔ شخصی و خصوصی دارد بدون انتشار کد منبع، نیاز به مجوز ندارد. در این حالت، می‌توان از Qt به صورت رایگان استفاده کرد. بدون نیاز به مجوز: استفاده از Qt برای پروژه‌های شخصی بدون هدف انتشار کد منبع با محدودیتی همراه نخواهد بود. توسعهٔ نرم‌افزار باز (Open Source): نیاز به مجوز: اگر قصد توسعهٔ یک نرم‌افزار منبع باز با Qt را دارید و می‌خواهید کد منبع خود را نیز تحت یک مجوز Open Source انتشار دهید، نیاز به مجوز GPL یا LGPL خواهید داشت. بدون نیاز به مجوز: اگر نیازی به انتشار کد منبع ندارید و از Qt برای پروژه منبع باز خود استفاده می‌کنید، می‌توانید از نسخهٔ Qt با مجوز LGPL بدون مشکل استفاده کنید. توسعهٔ نرم‌افزار تجاری (Commercial Software): نیاز به مجوز: اگر قصد توسعهٔ نرم‌افزار تجاری دارید و نمی‌خواهید کد منبع خود را انتشار دهید، نیاز به مجوز تجاری Qt دارید. بدون نیاز به مجوز: اگر از Qt برای توسعهٔ یک نرم‌افزار تجاری استفاده می‌کنید و توافق به اشتراک‌گذاری کد منبع ندارید، می‌توانید از نسخهٔ تجاری Qt بهره‌مند شوید. توسعهٔ نرم‌افزار تحت LGPL: نیاز به مجوز: اگر می‌خواهید نرم‌افزار تجاری توسعه دهید، اما نیاز به استفاده از کتابخانه Qt دارید و می‌خواهید تغییرات خود را در کتابخانه منتشر کنید، باید از مجوز LGPL استفاده کنید. بدون نیاز به مجوز: اگر قصد استفاده از Qt را در یک نرم‌افزار تجاری با حفظ محرمانگی کد دارید، می‌توانید از مجوز تجاری Qt بهره‌مند شوید. برخی از نکات را نیز باید در نظر بگیرید، مانند نوع کامپایل و نوع مجوز‌های قابل پذیرش در فروشگاه‌ها که عموماً همهٔ آن‌ها را توضیح دادیم به چه صورت هستند.
  2. کامبیز اسدزاده

    کتاب آموزش پیشرفته ++C همراه Qt (پیشرفته)

    نگارش ۱.۳.۸

    2,327 دریافت

    دنیای خود را چگونه با کیوت بسازیم!؟ با توجه به توسعهٔ روزافزون فناوری،‌ دنیای نرم‌افزاری همگام با آن با سرعت بسیار زیادی در حال پیشرفت و توسعه است. ما برای رسیدن به این مسیر باید به فکر تولید و توسعهٔ محصول با کیفیت همراه با اقدامات کلیدی باشیم تا این محصول هماهنگ با استاندارد‌های جهانی باشد. برای این امر نیاز است تا این استاندارد‌ها را بررسی و در درون پروژه‌های خود مورد استفاده قرار دهیم. کیوت به عنوان یک چهارچوب قدرتمند یکی از بهترین و پیشتاز‌ترین ابزار‌های موجود در دنیای برنامه‌نویسی است که با تمرکز بر روی مباحث تولید محصولی اساساً بر پایهٔ تجربه‌کاربری و رابط‌کاربریِ پیشرفته همراه با پشتیبانی از قدرتمند‌ترین زبان برنامه‌نویسی، نتیجه‌ای مطلوب را در مسیر توسعهٔ محصول نرم‌افزاری شما فراهم می‌کند. توجه داشته باشید برنامه‌نویسی صرفاً نوشتن کد منطقی و برقراری ارتباط با داده‌ها و حل مسائل مربوط به آن نیست! علاوه بر حل مشکل، برقراری ارتباط با احساسات کاربر و ایجاد یک تجربه‌ و تعامل خوب بسیار مهم است. باید توجه داشت که زمان، هزینه، سرعت و کیفیت همه باهم مهم هستند و برای به حداکثر رساندن درجه کیفیت هر یک از این مولفه‌ها باید از بهترین روش‌‌های ممکن استفاده کرد که شامل مواردی همچون چند-سکویی، ابری، تجربه‌کاربری، رابط‌کاربری، رابط‌های برنامه‌نویسی، کتابخانه‌ها و غیره... می‌باشند و برای رسیدن به آن‌ها کافی است یک زبان مهم و پایه همراه با چند زبان فرعی و فناوری‌های مرتبط با یکدیگر را به عنوان ابزار در اختیار داشته باشیم. آخرین اعتبار تخفیفات ویژه به مناسبت‌های اخیر به پایان رسیده است. نکتهٔ بسیار مهم: این کتاب به صورت رسمی در کتابخانهٔ ملی ثبت شده است، بنابراین هرگونه چاپ، تکثیر و به اشتراک‌گذاری این کتاب پیگیرد قانونی دارد. توجه: دریافت نسخه‌های به‌روز‌رسانی شده تنها از این صفحه برای کسانی که حداقل یک بار آن را تهیه کرده‌اند امکان‌پذیر است. نوع این کتاب الکترونیکی است، بعد از پرداخت می‌توانید بر روی دکمهٔ دریافت فایل در همین صفحه کلیک کرده و آن را دریافت نمایید. در صورتی که درگاه پرداختی با مشکل مواجه شده باشد، می‌توانید به شماره کارت ۶۱۰۴۳۳۷۸۸۴۵۳۳۳۴۸ (بانک ملت) واریز و آن را به آدرس kambiz.ceo@gmail.com و یا شناسهٔ تلگرامی @Kambiz_Asadzadeh اطلاع دهید تا تأیید شود. از تاریخ ۲۶ آذر ۱۴۰۲ دریافت این کتاب بدون پرداخت هزینه توسط نویسنده تأیید می‌شود، شما می‌توانید بعد از مطالعه هزینهٔ آن را بپردازید. در صورتی که از شما اطلاعات آدرس مکانی پرسیده شد، می‌توانید آن‌ها را وارد نکنید. * تمامی حقوق مادی و معنوی این کتاب متعلق به مولف و ناشر مولف (کامبیز اسدزاده) می‌باشد و هرگونه کپی برداری از آن پیگرد قانونی خواهد داشت. توجه : در داشتن هر گونه انتقاد و پیشنهاد در رابطه با این کتاب با آدرس شخصی نویسنده (kambiz.ceo@gmail.com) مکاتبه نمایید. نکته : این کتاب در روز‌های خاص ممکن است شامل تخفیف قرار بگیرد. نکته دوم : کسانی که این کتاب را یک بار خریداری می‌کنند نسخهٔ به‌روز‌رسانی شده آن را به صورت رایگان می‌توانند دریافت کنند. برخی از درخواست‌ها در کتاب مقدماتی به صورت زیر بودند: آموزش پیشرفته در رابطه با QML و آشنایی با آن آموزش برقراری ارتباط بین ++C و QML به صورت بک‌اند و فرانت‌اند آموزش کار با کنترل‌ها و نحوهٔ سفارشی سازی پروژه آموزش برقراری ارتباط با پایگاه داده و فناوری های مرتبط با آن آموزش نحوهٔ پیکربندی کیت‌ها، کامپایلر و ... آموزش نحوه توسعه برنامه بر روی بستر‌های مختلف از جمله اندروید، آی‌او‌اس و ... و درخواست‌های دیگر... بنابراین بر اساس این درخواست‌ها و محتوایی که نیاز می باشد بعد از جلد مقدماتی با آن‌ها آشنا باشید را در این نسخه فراهم کرده ایم. نکته از نظر من در رابطه با محتوا: کتابخانه کیوت شامل مباحث بسیار زیادی است که می‌توان از هزاران صفحه محتوای آموزشی تولید کرد. اما در این محتوای آموزشی من تنها به مواردی اشاره کرده‌ام که لازمهٔ کار هستند و در پروژه‌ها می‌بایست اطلاعات لازم در رابطه با آن‌ها داشته باشید. سرفصل ها و محتوا چه چیز‌هایی هستند؟ محتوای کتاب طبق آخرین استاندارد کتابخانه بر پایه نسخه ۵.۸ به بالا می‌باشد. محتوای آن به نسخه ۵.۹ و حتی ۵.۱۳ به‌روز‌رسانی شده است. همچنین ویژگی های و موارد مهمی که در نسخه ۵.۹ و ۵.۱۰ موجود هستند در این کتاب به آن‌ها اشاره شده است. سر فصل‌های نهایی و تایید شده کتاب: فصل اول مقدمه بر زبان ++C برخی از قابلیت‌ها ساختار برنامه در ++C کتابخانه‌ها فرق بین C و ++C ویژگی‌های معرفی شده در ++C ویرایش‌های ۱۱ ٬ ۱۴ و ۱۷ کامپایلر‌های ++C و وضعیت آن‌ها ساختار اسناد ++C در پروژه‌ کاربرد این زبان در کجاست؟ استاندارد‌های زبان مقدمه کیوت (Qt) معرفی کیوت (Qt) ۵.۹ آشنایی با محیط توسعه، نصب و راه اندازی همراه با پیکربندی کیت (Kit) در آن نصب و راه اندازی محیط Qt پیکربندی کیت‌ها در macOS پیکربندی کیت‌ها در Linux پیکربندی کیت‌ها در Windows معرفی محیط توسعه کیوت کرِیتور (Qt Creator) نسخه 4 پیکربندی و تنظیمات مربوط به ساخت برای پلتفرم‌های مختلف معرفی مجوز های Qt و نحوه استفاده از مناسبترین مجوز لوگو‌های نشانگر ساخته شده با Qt پشتیبانی از انواع پلتفرم‌ها پشتیبانی از انواع معماری ها شرایط و قوانین لازم جهت انتشار اپلیکیشن در فروشگاه iTunes یا همان (Apple Store) شرایط و قوانین لازم جهت انتشار اپلیکیشن در فروشگاهWindows Store شرایط و قوانین لازم جهت انتشار اپلیکیشن در فروشگاه Google Play شرایط و قوانین اختصاصی برنامه تحت Qt جهت انتشار و پذیرش در فروشگاه های مرتبط فصل دوم معرفی فناوری Qt Quick ویرایش 2 معرفی زبان کیو اِم اِل (QML) ویرایش 2 آشنایی با سبک - سینتَکس (Syntax) زبان QML روش اعلام یا اظهار یک شیء در QML اشیاء فرزند (Child-Object) در QML سبک و روش اعمال اظهار نظر (Comment) در QML صفت های اشیاء در QML پشتیبانی از جاوا اسکریپت (JavaScript) و ترکیب آن با QML روش استفاده از جاوا اسکریپت در سند QML روش های ترکیب ++C و استفاده از آن در سند QML فصل سوم معرفی انواع پروژه ها تحت فناوری کیوت کوئیک (Qt Quick) معرفی پروژه از نوع Qt Widget Application معرفی پروژه از نوع Qt Console Application معرفی پروژه از نوع Qt Quick Application معرفی پروژه از نوع Qt Quick Controls 2 Application معرفی پروژه از نوع Qt Quick Controls Application معرفی پروژه از نوع Qt Quick Canvas 3D Application معرفی پروژه از نوع Qt Quick Labs Controls Application آغاز ایجاد پروژه تحت C++ و Qt Quick ساده ترین برنامه معرفی کلاس QGuiApplication معرفی کلاس QQmlApplicationEngine معرفی کلاس QCoreApplication معرفی تابع exect در پروژه فصل چهارم انواع کنترل ها، منو ها و دیگر آبجکت ها معرفی انواع QML پایه در فناوری Qt Quick نوع date نوع color نوع font نوع matrix4x4 نوع point نوع quaternion نوع rect نوع size نوع vector2d نوع vector3d نوع vector4d معرفی انواع اشیاء QML در فناوری Qt Quick معرفی Accessible معرفی AnchorAnimation معرفی AnchorChanges معرفی AnchorImage معرفی AnimatedSprite معرفی Animation معرفی AnimationController معرفی Animator معرفی Behavior معرفی BorderImage معرفی Contex2D معرفی Canvas معرفی CanvasGradient معرفی CanvasImageData معرفی CanvasPixelArray معرفی CanvasColorAnimation معرفی Column معرفی DoubleValidator معرفی Drag معرفی DragEvent معرفی DropArea معرفی EnterKey معرفی Flickable معرفی Flipable معرفی Flow معرفی FocusScope معرفی FontLoader معرفی FontMeteric معرفی Gradient معرفی GridMesh معرفی GridView معرفی Image معرفی IntValidator معرفی Item معرفی ItemGraResult معرفی KeyEvent معرفی KeyNavigation معرفی Keys معرفی LayoutMirror معرفی ListView معرفی Loader معرفی MouseArea معرفی MouseEvent معرفی MultiPointTouchArea معرفی NumberAnimation معرفی OpacityAnimator معرفی ParallelAnimation معرفی GraphicInfo معرفی ParentAnimation معرفی ParentChange معرفی Path معرفی PathAnimation معرفی PathView معرفی PauseAnimation معرفی PropertyAction معرفی PropertyChanges معرفی Rectangle معرفی RegExpValidator معرفی Repeater معرفی Rotation معرفی RotationAnimation معرفی RotationAnimator معرفی Row معرفی Scale معرفی ScaleAnimator معرفی SecuentialAnimation معرفی ShaderEffect معرفی ShaderEffectSource معرفی Shortcut معرفی SmoothedAnimation معرفی SpringAnimation فصل پنجم معرفی انواع کنترل های 2 Qt Quick Controls کنترل AbstractButton کنترل ApplicationWindow کنترل BusyIndicator کنترل Button کنترل ButtonGroup کنترل CheckBox کنترل CheckDelegate کنترل ComboBox کنترل Container کنترل Control کنترل Dial کنترل Drawer کنترل Frame کنترل GroupBox کنترل ItemDelegate کنترل Label کنترل Menu کنترل MenuItem کنترل Page کنترل PageIndicator کنترل Pane کنترل Popup کنترل ProgressBar کنترل RadioButton کنترل RadioDelegate کنترل RangeSlider کنترل ScrollBar کنترل ScrollIndigator کنترل Slider کنترل SprinBox کنترل StackView کنترل SwipeDelegate کنترل SwipeView کنترل Switch کنترل SwitchDelegate کنترل TabBar کنترل TabButton کنترل TextArea کنترل TextField کنترل ToolBar کنترل ToolButton کنترل ToolTip کنترل Thumbler فصل ششم معرفی Qt Quick Dialog (دیالوگ های انتخاب رنگ، فایل، فونت و پیغام) معرفی Color Dialog معرفی Font Dialog معرفی File Dialog معرفی Message Dialog معرفی Qt Quick Layouts معرفی Column Layout معرفی Grid Layout معرفی Row Layout معرفی Stack Layout معرفی Qt Quick Control Styles (سبک و استایل نویسی کنترل ها – سفارشی سازی) واکنش گرایی و پاسخ دهی محتوای وب در اپلیکیشن با Qt WebEngine محتوای چند رسانه ای در کیوت QMultimedia محتوای چند رسانه ای در کیوت QMultimedia پخش صوت ظبط صدا در فایل پخش ویدیو کار با دوربین فصل هفتم معرفی و پیکربندی کار با بانک اطلاعاتی (دیتابیس) کار با بانک اطلاعاتی و ارتباط آن بین C++ و QML معرفی و کار با XML معرفی و کار با JSON معرفی و کار با QSetting سفارشی سازی فایل .pro پروژه فصل هشتم مقایسه انواع حالت های کامپایل Debug و Release نحوه افزودن دیگر کتابخانه های C++‎‎ در محیط Qt Creator و استفاده همراه با کتابخانه Qt فرق بین کامپایل استاتیک و داینامیک نحوه خروجی گرفتن / گسترش (Deployment) در Qt پیکربندی و انتشار برنامه در پلتفرم ویندوز (Windows) پیکربندی و انتشار برنامه در پلتفرم مک (macOS) پیکربندی و انتشار برنامه در پلتفرم لینوکس (Linux) پیکربندی و انتشار برنامه در پلتفرم‌های iPhone و iPad (iOS) پیکربندی و انتشار برنامه در پلتفرم اندروید (Android) معرفی ابزار کیوبس (QBS) به روز رسانی کیوت بدون دریافت فایل نصبی آفلاین اهداف و چشم‌انداز فنی کیوت ۶ پیشنهادات و ملاحظات در عملکرد و کارآیی (جدید)

    رایگان

  3. کامبیز اسدزاده

    کتاب آموزش مقدماتی ++C همراه Qt (مقدماتی)

    نگارش 5.0

    973 دریافت

    هدف از این آموزش‌ها آشنایی با امکاناتی که در Qt می‌توان استفاده کرد می‌باشد، که شامل کدنویسی کمتر، خروجی و طرح های بیشتر و در نهایت استفاده در پلتفرم‌های مورد مختلف است. لذا جهت بهره‌مندی از این کتابخانه ما با در نظر گرفتن اینکه علاقه‌مندان با زبان ++C آشنایی لازم را دارند منتشر کرده‌ایم. بنابراین در صورتی که علاقه‌مندان اطلاعات کافی در رابطه با خود زبان ندارند پیشنهاد می‌کنیم ابتدا اقدام به تهیه و مطالعه آموزش‌های لازم در ++C نمایند که برخی از لینک‌های رسمی و استاندارد آن را در زیر اعلام نموده‌ایم. نوع این کتاب الکترونیکی است، بعد از پرداخت می‌توانید بر روی دکمهٔ دریافت فایل در همین صفحه کلیک کرده و آن را دریافت نمایید. در صورتی که درگاه پرداختی با مشکل مواجه شده باشد، می‌توانید به شماره کارت ۶۱۰۴۳۳۷۸۸۴۵۳۳۳۴۸ (بانک ملت) واریز و آن را به آدرس kambiz.ceo@gmail.com و یا شناسهٔ تلگرامی @Kambiz_Asadzadeh اطلاع دهید تا تأیید شود. از تاریخ ۲۶ آذر ۱۴۰۲ دریافت این کتاب بدون پرداخت هزینه توسط نویسنده تأیید می‌شود، شما می‌توانید بعد از مطالعه هزینهٔ آن را بپردازید. عنوان این آموزش "برنامه نویسی ++C همراه با کتابخانه های Qt 5.12.x (سطح مقدماتی ویرایش ۵) می‌باشد که به صورت زیر فهرست بندی شده است: فصل اول مقدمه کتابخانه Qt قابلیت ها در طراحی فناوری Qt Quick و QML نسخه های کیوت مجوز های موجود در این کتابخانه محیط های توسعه کیوت ویژگی های کیوت پشتیبانی از انواع سیستم عامل ها نصب و پیکربندی Qt فصل دوم انواه پروژه و ایجاد آن انواع پروژه ها ایجاد پروژه فصل سوم ساده ترین برنامه معرفی و کار با Signal و Slot ها و Event ها معرفی و کار با نمایش Windows معرفی و کار با لایه ها زبانه ها و بدنه های در طراحی معرفی و کار با قابلیت های HTML و CSS در طراحی فصل چهارم معرفی و کار با لایه های افقی و عمودی معرفی و کار با لایه های Grid در طراحی فرم معرفی و کار با جدا کننده ها Splitter فصل پنجم معرفی و کار با دایرکتوری ها معرفی و کار با فایل ها / خواندن و نوشتن در آن ها فصل ششم معرفی و کار با برچسب ها Label معرفی و کار با دکمه ها Button معرفی و کار با کنترل ورودی LineEdit معرفی و کار با چک باکس CheckBox معرفی و کار با RadioButton معرفی و کار با Combobox معرفی و کار با لیست ها / ListWidget معرفی و کار با لیست های درختی / TreeWidget معرفی و کار با Action ها معرفی و کار با Slider و Progress ها معرفی و کار با Statusbar در فرم فصل هفتم معرفی و کار با MessageBox معرفی و کار با Timer معرفی و کار با Thread ها فصل هشتم معرفی و کار با Map معرفی و کار با Hash معرفی و کار با QStringList لیست رشته ای فصل نهم معرفی و کار با الگوریتم های معرفی و کار شبکه / دانلود فایل بر اساس پروتکل های HTTP و FTP معرفی و کار با باینری و سریالیز کردن آبجکت ها معرفی و کار با TextStream ها فصل دهم مقایسه انواع حالت های کامپایل در Qt نحوه افزودن دیگر کتابخانه های C++‎‎ در محیط Qt Creator و استفاده همراه با کتابخانه Qt نحوه خروجی گرفتن / گسترش (Deployment) در Qt مقایسه و پیکربندی دو موتور قدرتمند OpenGL و ANGLE در پروژه درایور دیتابیس هایی که تحت این کتابخانه پشتیبانی می‌شوند ساخت راه‌انداز دیتابیس در پلتفرم‌های Linux، macOS و Windows حق نشر کتاب و اهداف در نسخهٔ بعدی کتاب توجه : در داشتن هر گونه انتقاد و پیشنهاد در رابطه با این کتاب با آدرس شخصی نویسنده (kambiz.ceo@gmail.com) مکاتبه نمایید. نکته دوم : کسانی که این کتاب را یک بار خریداری می‌کنند نسخهٔ به روز رسانی شده آن را به صورت رایگان می‌توانند دریافت کنند.

    رایگان

  4. با سلام و درود‌های فراوان بر شما دوست‌داران طراحی و توسعه، امروز نیاز دیدم یک توضیح در رابطه با تفاوت‌های عمدهٔ فناوری ساخت و توسعهٔ رابط‌کاربری در نرم‌افزار‌های تحت فریمورک کیوت ارائه کنم. در این مقاله من به دو سبک متفاوت با کارآیی و اهمیت آن‌ها مطابق با مستندات فریم‌ورک کیوت می‌پردازم و شما می‌توانید بر اساس نیازمندی و برداشت خود از آن، یکی از فناوری‌های لازم را انتخاب و ظاهر برنامهٔ خودتان را با آن آراسته کنید! رابط‌کاربری (UI) یکی از عوامل اصلی در جذب کاربران و بهبود تجربه‌‌کاربری (UX) است. یک طراحی صحیح و مناسب برای واسط‌کاربری می‌تواند کاربران را به نرم‌افزار شما جذب کند و به معنای واقعی کاربران را متقاعد کند که نرم‌افزار شما صحیح است و قابل استفاده، حتی اگر امر اصلی برنامه اجرای آن باشد. رابط‌کاربری مناسب، کاربران را به یادگیری آسان فرایند‌های نرم‌افزار و همچنین استفاده از آن ترغیب می‌کند. با طراحی یک واسط کاربری ساده و کاربر پسند، می‌توان زمان و هزینه‌ای برای آموزش کاربرانی که قرار است از نرم‌افزار شما استفاده کنند, صرفه جویی کرد. در نهایت، رابط‌کاربری نرم‌افزار ممکن است انگیزه‌های کاربران برای استفاده از نرم‌افزار شما را افزایش دهد. با انتخاب فوق‌العاده از کاغذ دیواری و فونت‌های جذاب، شما می‌توانید به تاثیر خوبی بر روی انگیزه‌های کاربران برای استفاده از نرم‌افزار خود داشته باشید. اهمیت رابط‌های کاربری مدرن و سنتی رابط‌کاربری سنتی، یک رابط‌کاربری ابتدائی است، که چندین دهه است به کار می‌رود. این سبک برای محیط‌های کاربردی نسبتاً پایدار و ساده‌تر معرفی شده است، با پنجره‌ها، دستورالعمل‌های پایه، معمول و منو‌‌های کلاسیک. اما اخیراً، رابط‌های کاربری مدرن، تلاش کرده‌اند تا به کاربرانی که حوصله‌ٔ کار با رابط‌کاربری سنتی را ندارند، ارائه شوند چرا که نیاز به تعامل و تجربه‌کاری بهتر بیشتر و بیشتر می‌شود. این رابط‌ها، با استفاده از طراحی مدرن، صفحات پویا، و مفهوم سرعت، زیبایی و حتی تحرک مناسب، می‌خواهند توانایی شما را در مدیریت محیط‌کاری (کار با نرم‌افزار) افزایش دهند. بیشتر رابط‌های کاربری مدرن، به کاربران محیط کاری تمیز و منظم، صفحه اصلی متحرک، آیکون های جذاب و فهرست منوی منظم، نوع قلم و اندازهٔ مناسب و جذاب را ارائه می‌دهد تا با اشتیاق بیشتری از کار با محیط مورد نظر لذت ببرید. در این سند، تفاوت بین Widgets Qt و Qt Quick و نحوهٔ انتخاب مناسب برای نیازهای برنامه خود را توضیح خواهیم داد. قبل از اینکه به دلایلی بپردازیم که چرا شما ممکن است بخواهید Widgets Qt را به Qt Quick یا برعکس انتخاب کنید، سپس شروع به بررسی آنچه که هر کدام دقیقاً ارائه می‌دهند و در چه شرایطی می‌توانید از آنها استفاده کنید نیز خواهیم داشت. راه‌کار‌های فریم‌ورک Qt برای طراحی رابط‌کاربری این فریم‌ورک دارای چندین فناوری برای ایجاد رابط‌کاربری است. در حالی که می‌توان این فناوری‌های مختلف را در صورت نیاز ترکیب و مطابقت داد، یک رویکرد اغلب برای نوع خاصی از رابط کاربری مناسب‌تر از سایرین است. Qt Creator مثال خوبی از برنامه‌ای است که ویجت‌های سنتی Qt را با Qt Quick ترکیب می‌کند. Qt Widgets اساس رابط‌کاربری را تشکیل می‌دهند، در حالی که Qt Quick به عنوان مثال برای اجرای حالت خوش آمدگویی استفاده می شود. بخش‌های زیر معرفی مختصری از فناوری‌های موجود برای ایجاد رابط کاربری و جدول مقایسه‌ای برای کمک به انتخاب بهترین فناوری مناسب ارائه می‌دهند. دربارهٔ Qt Widget (کیوت ویجت) ماژول Qt Widgets مجموعه‌ای از عناصر رابط‌کاربری را برای ایجاد رابط‌های کاربری کلاسیک به سبکِ پیش‌فرضِ دسکتاپ فراهم می‌کند. کلاس QWidget قابلیت اولیه برای رندر کردن (ساخت) روی صفحه و مدیریت رویدادهای ورودی کاربر را فراهم می‌کند. تمام عناصر UI که Qt ارائه می‌کند یا زیر کلاس‌های QWidget هستند یا در ارتباط با یک زیر کلاس QWidget استفاده می‌شوند. ایجاد ویجت‌های سفارشی با زیر کلاس QWidget یا یک زیر کلاس مناسب و پیاده‌سازی مجدد کنترل کننده رویداد مجازی انجام می‌شود. سبک‌ها (پوسته‌ها/ظاهر) سبک‌ها به نمایندگی از ویجت‌ها طراحی می‌شوند و ظاهر و احساس یک رابط‌کاربری گرافیکی را دربر می‌گیرند. ویجت‌های داخلی Qt از کلاس QStyle برای انجام تقریباً تمام طراحی‌های خود استفاده می‌کنند و اطمینان حاصل می‌کنند که دقیقاً شبیه ویجت‌های بومی معادل هستند که در زیر تصاویر مربوط به ظاهر پیش‌فرض سیستم‌عامل‌های ویندوز، لینوکس و مک هستیم. به طور کلی، Qt Style Sheets مکانیزم قدرتمندی است که به شما امکان می‌دهد ظاهر ویجت‌ها را سفارشی کنید، علاوه بر آنچه که قبلاً با زیر کلاس‌بندی QStyle امکان‌پذیر است. لایه‌بندی‌ها (چیدمان) چیدمان‌ها روشی ظریف و انعطاف پذیر برای مرتب کردن خودکار ویجت های کودک در ظرف خود هستند. هر ویجت مورد نیاز اندازه خود را از طریق خصوصیات sizeHint و sizePolicy به چیدمان گزارش می‌دهد و طرح‌بندی فضای موجود را بر این اساس توزیع می‌کند. محیط Qt Designer یک ابزار قدرتمند برای ایجاد تعاملی و چیدمان ویجت‌ها در طرح‌بندی است. کلاس‌های Model/View معماری model/view کلاس‌هایی را ارائه می‌دهد که نحوه ارائه داده‌ها به کاربر را مدیریت می‌کنند. برنامه‌های مبتنی بر داده که از فهرست‌ها و جداول استفاده می‌کنند، به گونه‌ای ساختار یافته‌اند که داده‌ها و مشاهده را با استفاده از مدل‌ها، نماها و نمایندگان جدا کنند. محیط توسعهٔ Qt Creator و بخش Qt Designer ویرایشگر کد پیشرفته Qt Creator به شما امکان می‌دهد نرم‌افزار را به زبان‌های C++، QML، جاوا اسکریپت، پایتون و سایر زبان‌ها بنویسید. این ویژگی تکمیل کد، برجسته سازی نحو، refactoring است و دارای اسناد داخلی در نوک انگشتان شما است. دربارهٔ کیوت کوئیک (Qt Quick) ماژول Qt Quick کتابخانهٔ استاندارد برای نوشتن برنامه‌‌های کاربردی QML است. در حالی که ماژول Qt QML موتور QML و زیرساخت زبان را فراهم می‌کند، ماژول Qt Quick تمام انواع اساسی لازم برای ایجاد رابط‌کاربری با QML را ارائه می‌دهد. در واقع یک بوم بصری را ارائه می‌کند و شامل انواعی برای ایجاد و متحرک کردن اجزای بصری، دریافت ورودی کاربر، ایجاد مدل‌ها و نماهای داده‌ها و نمونه‌سازی با تأخیر شیء است. ماژول Qt Quick نیز یک API QML ارائه می‌کند که انواع QML را برای ایجاد رابط‌های کاربری با زبان QML فراهم می‌کند و هم یک رابط‌برنامه‌نویسی (API) از ++C برای گسترش برنامه‌های QML با کد ++C ارائه می‌کند. این یک مزیت بزرگ است که به شما اجازه می‌دهد رابط‌های مبتنی بر قدرت سی++ را به خوبی ارائه کنید. پوستهٔ پیش‌فرض (Default) تا کیوت ۵ و پوستهٔ پایه (Basic) از کیوت ۶ به بعد. سبک پیش فرض یک سبک همه جانبه ساده و سَبُک است که حداکثر عملکرد را برای کنترل های سریع Qt ارائه می دهد. پوستهٔ فیوژن (Fusion) سبک Fusion یک سبک پلتفرم آگنوستیک است که ظاهری بی‌نظیر دسک‌تاپ را برای کنترل‌های کیوت کوئیک ارائه می‌دهد. پوستهٔ ایمَجین (Imagine) سبک Imagine بر اساس دارایی‌های تصویر است. این سبک دارای مجموعه‌ای پیش‌فرض از تصاویر است که به راحتی با ارائه یک فهرست حاوی تصاویر با استفاده از یک قرارداد نامگذاری از پیش تعریف شده قابل تغییر است. پوستهٔ مک‌او‌اِس (macOS) از کیوت ۶ به بعد. سبک macOS یک سبک بومی برای macOS است. پوستهٔ آی‌او‌اِس (iOS) از کیوت ۶ به بعد. سبک iOS یک سبک بومی برای iOS است. پوستهٔ متریال (Material) سبک Material، طراحی جذابی را بر اساس دستورالعمل‌های طراحی متریال Google ارائه می‌کند، اما به منابع سیستم بیشتری نسبت به سبک پیش‌فرض نیاز دارد. پوستهٔ یونیورسال (Universal) سبک Universal طراحی جذابی را بر اساس دستورالعمل‌های طراحی جهانی مایکروسافت ارائه می‌کند، اما به منابع سیستم بیشتری نسبت به سبک پیش‌فرض نیاز دارد. پوستهٔ ویندوز (Windows) از کیوت ۶ به بعد. سبک Windows یک سبک بومی برای Windows است. اگر هیچ سبکی به صراحت تنظیم نشده باشد، یک سبک پیش فرض استفاده خواهد شد. سبکی که استفاده می‌شود به سیستم‌عامل بستگی دارد: سیستم‌عامل اندروید: Material Style سیستم‌عامل آی‌او‌اِس: iOS Style سیستم‌عامل لینوکس: Fusion Style سیستم‌عامل مک‌او‌اِس: macOS Style سیستم‌عامل ویندوز: Windows Style انتخاب سبک در زمان کامپایل انتخاب سبک زمان کامپایل راهی برای تعیین یک سبک برای استفاده با وارد کردن آن در QML است. به عنوان مثال، برای وارد کردن سبک Material: import QtQuick.Controls.Material ApplicationWindow { // ... } انتخاب سبک در زمان اجرا انتخاب سبک زمان اجرا راهی برای تعیین یک سبک برای استفاده با وارد کردن QtQuick.Controls است: import QtQuick.Controls افزونهٔ QtQuick.Controls استایل و استایل بازگشتی را که در زمان اجرا تنظیم شده‌اند از طریق یکی از روش‌های زیر وارد می‌کند: دستورQQuickStyle::setStyle() The -style آرگومان خط فرمات QT_QUICK_CONTROLS_STYLE متغیر‌های محای qtquickcontrols2.conf پیکربندی از طریف فایل اولویت این رویکردها به ترتیبی است که فهرست شده‌اند، از بالاترین به پایین‌ترین. یعنی استفاده از QQuickStyle برای تنظیم استایل همیشه بر استفاده از آرگومان خط فرمان اولویت دارد. برای اجرای یک برنامه با یک سبک خاص، یا با استفاده از QQuickStyle در ++C، پوسته را پیکربندی کنید، یک آرگومان خط فرمان را ارسال کنید، یا یک متغیر محیطی را تنظیم کنید. روش دیگر، سبک ترجیحی و ویژگی‌های خاص سبک را می‌توان در یک فایل پیکربندی مشخص کرد. اولویت این رویکردها به ترتیبی است که در زیر فهرست شده‌اند، از بالاترین به پایین‌ترین. یعنی استفاده از QQuickStyle برای تنظیم استایل همیشه بر استفاده از آرگومان خط فرمان اولویت دارد. استفاده از Qt Quick Style در ++C رابط‌های QQuickStyle C++ API پیکربندی یک سبک خاص را ارائه می‌کند. مثال زیر یک برنامه Qt Quick Controls را با سبک Material اجرا می‌کند: QQuickStyle::setStyle("Material"); استفاده از روش آرگومان‌های خط فرمان ارسال آرگومان خط فرمان-style راه مناسبی برای آزمایش سبک‌های مختلف است. این روش بر سایر روش های ذکر شده در زیر ارجحیت دارد. مثال زیر یک برنامه Qt Quick Controls را با سبک Material اجرا می‌کند: ./app -style material استفاده از روش متغیر‌های محیطی تنظیم متغیر محیطی QT_QUICK_CONTROLS_STYLE را می‌توان برای تنظیم ترجیح سبک در سراسر سیستم استفاده کرد که بر فایل پیکربندی ذکر شده در زیر ارجحیت دارد. مثال زیر یک برنامه Qt Quick Controls را با سبک جهانی اجرا می‌کند: QT_QUICK_CONTROLS_STYLE=universal ./app استفاده از روش پیکربندی فایل کنترل‌های کیوت کوئیک، از یک فایل پیکربندی خاص پشتیبانی می‌کند، :/qtquickcontrols2.conf، که در منابع یک برنامه تعبیه شده است. فایل پیکربندی می‌تواند سبک ترجیحی (ممکن است با یکی از روش‌هایی که قبلا توضیح داده شد لغو شود) و ویژگی‌های خاص سبک را مشخص کند. مثال زیر مشخص می کند که سبک ترجیحی سبک Material است. [Controls] Style=Material سفارشی‌سازی کنترل‌های کیوت کوئیک کنترل کیوت کوئیک از یک سلسله مراتب (درخت) از آیتم‌ها تشکیل شده است. به منظور ارائه ظاهر و احساس سفارشی، پیاده‌سازی پیش‌فرض QML هر آیتم را می‌توان با یک سفارشی جایگزین کرد. گاهی اوقات شما می‌خواهید برای یک بخش خاص از UI خود یک ظاهر «یکباره» ایجاد کنید و در هر جای دیگر از یک سبک کامل استفاده کنید. شاید از سبکی که استفاده می‌کنید راضی باشید، اما دکمه خاصی وجود دارد که اهمیت خاصی دارد. پشتیبانی از High-DPI در کیوت کوئیک کنترل‌های کیوت کوئیک، از مقیاس‌گذاری چند-سکویی با DPI (نقطه در اینچ) بالا که در Qt 5.6 معرفی شده است، پشتیبانی می‌کند. این ویژگی انتخابی است و می‌توان آن را با تنظیم ویژگی برنامه Qt::AA_EnableHighDpiScaling در ++C قبل از ساخت QGuiApplication فعال کرد: #include <QGuiApplication> #include <QQmlApplicationEngine> int main(int argc, char *argv[]) { QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling); // <-- QGuiApplication app(argc, argv); QQmlApplicationEngine engine; engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); return app.exec(); } محیط طراحی اختصاصی Qt Design Studio فرآیند توسعه خود را با پر کردن شکاف بین طراحان و توسعه‌دهندگان متحول کنید تا دیدگاه‌های طراحی خود را به رابط های کاربری آماده تولید تبدیل کنید. طراحی‌های رابط‌کاربری را با ابزارهای طراحی مانند Figma، Adobe XD یا Adobe Photoshop ایجاد کنید. آنها را به استودیوی طراحی Qt وارد کنید، جایی که کد به طور خودکار تولید شده و آماده استفاده توسط توسعه‌دهندگان است. تعاملات و رفتارهای پویا را شبیه‌سازی و تایید کنید. هر چیزی که در استودیوی طراحی Qt ساخته شده است ذاتاً کراس پلتفرم است و می‌تواند در هر سخت‌افزار یا محیط سیستم‌عاملی کامپایل شود. وقتی در مورد ایجاد رابط‌کاربری صحبت می‌کنیم، فقط در مورد ایجاد یک ماکت با دارایی‌های موجود صحبت نمی‌کنیم. با Qt Design Studio، دارایی‌های شما تبدیل به یک ترکیب رابط‌کاربری می‌شود که آماده عملکرد است. تفاوت‌های عمدهٔ Qt Widgets طراحی با این ماژول فقط بر پایهٔ زبان‌های برنامه‌نویسی ++C و Python در امکان‌پذیر است. .سبک و ظاهر بومی در پلتفرم‌های دسکتاپ اما نه در پلتفرم‌های موبایل. امکان سفارشی شدن را دارد. به بک‌اند بومی جهت ساخت نیاز ندارد. می‌تواند در مواقع لزوم از رابط‌های برنامه‌نویسی بومی بک‌اندی هر پلتفرم استفاده کند. سبک پایه را ارائه می‌کند، روان نیست، اما امکان تعریف انیمیشن را ارائه می‌کند. به واسطهٔ زیر کلاس‌ها یا کلاس‌های سفارشی خودتان می‌توانید رفتار‌های ویجت‌ را باز تعریف کنید. محیط اختصاصی طراحی و توسعهٔ Qt Designer تفاوت‌های عمدهٔ Qt Quick طراحی با این ماژول به صورت پایه به واسطهٔ QML امکان‌پذیر است. هرچند هنوز هم برخی از نیازمندی‌ها به واسطهٔ ++C و Python انجام می‌شود. شما می‌توانید ماژول‌ها و کامپوننت‌های سفارشی خوبی به واسطهٔ ++C برای QML طراحی کنید. ظاهر کاربری بومی تحت ماژول Qt Quick Controls از نسل کیوت ۶ به بعد ممکن شده است. تطبیق و دریافت اطلاعات پوسته برای اندروید در زمان نیاز ممکن است. به بک‌اند بومی و پس‌زمینه وابسته است. همچنین می‌توانید ایتم‌های خود را به صورت مستقیم با بک‌اند بومی ارائه کنید. می‌توانید پوستهٔ روان و جذابی را تعریف کنید. پیاده‌سازی انیمیشن‌ها و جلوه‌های بصری پیچیده بسیار ساده قابل پیاده‌سازی شدن است. جلوه‌های گرافیکی به راحتی قابل تعریف هستند. امکان سفارشی‌سازی رفتار‌های آیتم و کنترل‌ها وجود دارد. به واسطهٔ گسترش و یا ساخت کامپوننت‌های سفارشی خود بر اساس انواع موجود در Qt Quick. علاوه بر پشتیبانی از محیط Qt Designer، به محیط اختصاصی و پیشرفتهٔ طراحی و توسعهٔ Qt Design Studio مجهز است. چه زمانی باید یکی از این فناوری‌ها را به دیگری ترجیح دهیم؟ Qt Widgets اگر شما نیاز به یک رابط‌کاربری ساده و سریع نیاز دارید. اگر نمی‌خواهید با JavaScript سرو کار داشته باشید. Qt Quick زمانی که می‌خواهید رابط‌های کاربری جذاب و خلاقانه تولید کنید. زمانی که می‌خواهید برنامهٔ خود را برای موبایل و دستگاه‌های جاسازی شده (امبد) ارائه کنید. وقتی هدفتان ساخت نرم‌افزار‌های چند-سکویی باشد. زمانی که می‌خواهید بیشترین جذابیت و کارآیی را از نظر UI و UX ارائه کنید. آشنایی با زیرساخت RHI و کارآیی دو فناوری کیوت ویجت و کیوت کوئیک بسیاری از کاربران با توجه به کد‌های سی++ در کیوت ویجت، بر این باورند که ساخت و توسعهٔ رابط‌های کاربری با Qt Widgets عموماً سریع‌تر و از کارآیی بهتری برخوردار است. این حقیقت در قبل از زمان فناوری جدید از نسل کیوت کوئیک اعتبار بسیاری داشت، اما با توجه به توسعهٔ زیرساخت‌های کیوت در نسل‌های ۵.۱۵ و ۶ به بعد، تمامی فرایند رندرینگ به لطف کد‌های سی‌پلاس‌پلاس به صورت بومی تحت معماری RHI انجام می‌شوند و این مسأله دیگر حائز اهمیت نیست، مگر این‌که دلایل شما برای انتخاب کیوت ویجت صرفاً دسترسی ساخت به رابط‌کاربری ساده‌تر و عدم اهمیت داشتن سبکِ نوین باشد. زیرساخت QRhi، یک رابط سخت‌افزاری رندر Qt، انتزاع گرافیکی داخلی Qt است که در آن API‌های سه بعدی مانند OpenGL، Vulkan، Metal و Direct 3D درگیر هستند. در مقایسه با 5.15، پیشرفت‌های اصلی در نسخه 6.0، اصلاحات پولیش زیاد اینجا و آنجا و مهمتر از همه، مجموعه بزرگی از بهینه‌سازی عملکرد است. این بهینه سازی به طور کامل به صورت بومی و رابط‌های برنامه‌نویسی ترکیبی با ++C پیاده‌سازی شده است و کارآیی خروجی در تولید رابط‌های خلاقانه، جلوه‌های بصری ۲ و ۳ بعدی بسیار عالی خواهد بود. سخن پایانی ساخت و توسعهٔ یک رابط‌کاربری امروزه یکی از مهم‌ترین معیار‌های سنجش کیفی نرم‌افزار در سمت کاربر است، اگر این موضوع برای شما اهمیت بسیار دارد، قطعاً باید به روش‌های اختصاصی در طراحی سوق پیدا کنید. در غیر این صورت نیاز به کد‌نویسی بیشتر، درک و بازنویسی انتزاع‌های فراوان در سمت کد‌های خام به واسطهٔ Qt Widgets بسیار خسته کننده خواهد بود.
  5. sanatnegar

    ابزار Andrioid SDK , Android NDK, openssl , commandlinetools و غیره رو نصب کردم و در قسمت devices همه تیک ها سبز هست. یک پروژه qtquick برای اندروید ایجاد کردم. موقع کامپایل با خطای (gradle) زیر مواجه میشم : General error during conversion: Unsupported class file major version 63 از JDK ورژنن 17 تا 20 رو هم امتحان کردم بازم فایده نداشت
  6. با سلام در خصوص ایجاد یک notification در اندروید متاسفانه توضیحات کاملی موجود نیست مگر مثال خود کیوت که باز هم گنگ هست. اگر از دوستان کسی تجربه ساخت نوتیفیکیشن رو داره راهنمایی بفرماید ممنون میشم.
  7. MahdiGameMaker

    سلام جدیدا نمیدونم چی شد که موقع انتخاب خروجی دسکتاپ در اوبونتو با چنین اروری مواجه شدم! در گوگل هم نتیجه ای پیدا نکردم و بعضی هاش هم با اون روش حل نشد Qt 5.13 g++ -Wl,-rpath,/home/mail313/Qt5.13.0/5.13.0/gcc_64/lib -o calculator-qml calculator-qml.o qrc_calculator-qml.o statemachine.o /home/mail313/Qt5.13.0/5.13.0/gcc_64/lib/libQt5Gui.so /home/mail313/Qt5.13.0/5.13.0/gcc_64/lib/libQt5Scxml.so /home/mail313/Qt5.13.0/5.13.0/gcc_64/lib/libQt5Qml.so /home/mail313/Qt5.13.0/5.13.0/gcc_64/lib/libQt5Network.so /home/mail313/Qt5.13.0/5.13.0/gcc_64/lib/libQt5Core.so -lGL -lpthread /usr/bin/ld: cannot find -lGL Makefile:253: recipe for target 'calculator-qml' failed collect2: error: ld returned 1 exit status make: *** [calculator-qml] Error 1 01:12:24: The process "/usr/bin/make" exited with code 2.
  8. Ali71321

    سلام دوستان خسته نباشید. من میخوام به پروژه ام یک فرم جدید اضافه کنم که با کلیک روی یک دکمه باز بشه ولی به محض باز شدن بسته میشه. راهکار عملی برای این مورد چی میتونه باشه؟ ممنون.
  9. Ali71321

    خسته نباشید. من میخواستم در محیط Qt، محتوای یک فایل اکسل رو بخونم و مفاد فایل و به دیتابیس که بر روی Sql Server هستش منتقل کنم که خواندن فایل اکسل میسر نشد و روش هایی که در اینترنت سرچ کردم کارساز نبودن نیاز به راهنمایی دارم. پیشاپیش از کمکتون متشکرم.
  10. سلام، بنابر درخواست اعضای محترم لازم شد آموزشی در رابطه با نحوهٔ افزودن کتابخانه‌های دیگر به این محیط را توضیح دهیم. من در این آموزش کتابخانهٔ Poco را در نظر گرفته ام. کتابخانه را دانلود کرده و در یک مسیر مشخص اضافه کنید. برای مثال C:/MyLib/poco-1.9.0-all و یا در لینوکس و مک در مسیر /Users/{username}/Documents/Libs/poco-1.9.0-all در نظر داشته باشید که هر کتابخانه‌ای معمولاً دارای دو پوشه lib و include خواهد بود که شما باید این دو را به پروژهٔ خود اضافه کنید. هر کتابخانه‌ای باید قبل از کامپایل پیکربنی شده و سپس بیلد شود. برای مثال در کتابخانهٔ پوکو دستورات زیر را بعد از دریافت اجرا خواهیم کرد. cd /Users/username/Documents/Libs/poco-1.9.0-all سپس دستور ./configure و بعد از آن دستور make را اجرا کنید تا کتابخانه شروع به کامپایل شدن کند. بعد از کامپایل در پوشهٔ lib تمامی کتابخانه‌ها ایجاد خواهند شد. وارد محیط Qt Creator شده و سپس بعد از ایجاد یک پروژه بر روی آن راست کلیک و گزینهٔ add library را انتخاب کنید. سپس گزینهٔ External library را انتخاب نمایید. در مرحلهٔ بعد فایل libPocoFoundation.60.dylib و libPocoNet.60.dylib را در بخش library file و سپس مسیر include آن را در include path وارد کنید که مشابه مسیر زیر خواهد بود. Library file : /Users/kambiz/Documents/Libs/poco-1.9.0-all/lib/Darwin/x86_64/libPocoFoundation.60.dylib Include path : /Users/kambiz/Documents/Libs/poco-1.9.0-all/Foundation/include Library file : /Users/kambiz/Documents/Libs/poco-1.9.0-all/lib/Darwin/x86_64/libPocoNet.60.dylib Include path : /Users/kambiz/Documents/Libs/poco-1.9.0-all/Net/include بعد از افزودن کسیر و کتابخانه کُد تولید شده در فایل .pro به صورت زیر خواهد بود: win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../../Libs/poco-1.9.0-all/lib/Darwin/x86_64/release/ -lPocoFoundation.60 else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../../Libs/poco-1.9.0-all/lib/Darwin/x86_64/debug/ -lPocoFoundation.60 else:unix: LIBS += -L$$PWD/../../Libs/poco-1.9.0-all/lib/Darwin/x86_64/ -lPocoFoundation.60 INCLUDEPATH += $$PWD/../../Libs/poco-1.9.0-all/Foundation/include DEPENDPATH += $$PWD/../../Libs/poco-1.9.0-all/Foundation/include win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../../Libs/poco-1.9.0-all/lib/Darwin/x86_64/release/ -lPocoNet.60 else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../../Libs/poco-1.9.0-all/lib/Darwin/x86_64/debug/ -lPocoNet.60 else:unix: LIBS += -L$$PWD/../../Libs/poco-1.9.0-all/lib/Darwin/x86_64/ -lPocoNet.60 INCLUDEPATH += $$PWD/../../Libs/poco-1.9.0-all/Net/include DEPENDPATH += $$PWD/../../Libs/poco-1.9.0-all/Net/include مراحل افزودن به پایان رسید، وارد محیط کیوت شده و داخل فایل main.cpp هدر‌های مرتبط با کتابخانه و همچنین کُد آزمایشی آن را اضافه کنید. در این مثال من از کتابخانهٔ Net استفاده می‌کنم. //Qt Lib #include <QCoreApplication> //STL & External Lib #include "Poco/Net/SocketAddress.h" #include "Poco/Net/StreamSocket.h" #include "Poco/Net/SocketStream.h" #include "Poco/StreamCopier.h" #include <iostream> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); Poco::Net::SocketAddress sa("www.iostream.ir", 80); Poco::Net::StreamSocket socket(sa); Poco::Net::SocketStream str(socket); str << "GET / HTTP/1.1\r\n" "Host: www.iostream.ir\r\n" "\r\n"; str.flush(); Poco::StreamCopier::copyStream(str, std::cout); return a.exec(); } برنامه را کامپایل و اجرا کنید ?
  11. کامبیز اسدزاده

    چشم‌انداز فنی برای کیوت ۶

    این چشم‌انداز احتمالاً برای دوست‌‌داران کتابخانهٔ قدرتمند Qt و طرفدارانش جذاب باشد! بنابراین من سعی کرده‌ام تا نتایج پست رسمی کیوت را در رابطه با چشم‌انداز فنی برای آیندهٔ کیوت نسخهٔ ۶ است در اختیار شما قرار دهم. تقریباً ۷ سال پیش کیوت نسخهٔ ۵.۰ منتشر شد! از آن زمان بسیاری از چیز‌ها در دنیای اطراف ما تغییر پیدا کرده است. و اکنون وقت آن رسیده است که چشم‌انداز جدیدی را از نسخهٔ جدید‌تر تعریف کنیم. بنابراین در این پست ما به معرفی مهمترین مواردی که به کیوت ۶ مرتبط است را می‌پردازیم. به نقل از مدیر فنی کیوت Lars Knoll، کیوت ۶ دقیقاً ادامهٔ کارهایی است که در نسخهٔ ۵ انجام داده شده است. بنابراین توسعه باید به گونه‌ای باشد که کاربران نباید اذیت شوند. اما نسخهٔ جدید می‌تواند یک آزادی بالاتر را در اجرای ویژگی‌های جدید، عملکرد و پشتیبانی بهتر از شرایط امروز و فردا از آنچه در حال حاضر می‌توان در سری ۵ داشته باشیم را به ما خواهد داد. همانطور که جزئیات بیشتر در زیر شرح داده شده است، کیوت ۶ هدف زیادی از سازگاری با نسخهٔ قبلی خود یعنی کیوت ۵ را خواهد داشت. همچنین ما در حال توسعه روی نسخهٔ ۵ نیز هستیم که قصد داریم برخی از ویژگی‌های کیوت ۶ را در نسخه‌های کیوت ۵.۱۴ و کیوت ۵.۱۵ LTS معرفی کنیم. بنابراین با ثابت نگه‌داشتن ویژگی‌ها در کیوت ۵.۱۴، بیشترِ تمرکزِ تحقیق و توسعه به سمت کیوت ۶ تغییر خواهد یافت. بنابراین انتظار می‌رود کیوت ۶ تا پایان سال ۲۰۲۰ آماده شود. قبل از اینکه همه به چیز‌های جدید بپردازیم، بیایید برخی از ارزش‌های پایه از هستهٔ اصلی کیوت را برای کاربران خود یادآوری کنیم تا چیز‌هایی که نمی‌خواهیم تغییر کنند را تعریف کنیم. چه چیزی Qt را برای کاربران ما ارزشمند می‌کند؟ کیوت محصولی است که در بازار‌های مختلفی مورد استفاده قرار می‌گیرد، ارزش‌های اصلی در هستهٔ کیوت برای مشتریان و کاربران ما عبارتند از: ماهیت چند-سکویی آن، به کاربران این امکان را می‌دهد تا برنامه‌های خود را با استفاده از این فناوری به تمامی سیستم‌عامل‌های رو میزی، موبایل و سیستم‌های تعبیه شده (اِمبِد‌ها) مستقر کنند. مقایس پذیری آن از دستگاه‌های کم مصرف و یک منظوره تا برنامه‌های دسکتاپ پیچیده و یا سیستم‌های متصل شده. رابط‌های برنامه‌نویسی و ابزار‌ها و مستندات در سطح جهانی، ایجاد برنامه‌ها را ساده‌تر می‌کند. حفظ، ثبات (پایداری) و سازگاری، امکان حفظ بانک بزرگی از کد‌ها با حداقل تلاش برای نگه‌داری آن‌ها. یک اکو سیستم بزرگ توسعه‌دهنده با بیش از ۱ میلیون کاربر. یک نسخهٔ جدید از کیوت باید خواسته‌های محصول ما را مطابق با نیاز‌های بازار تنظیم کند، و در عین حال پنج ویژگیِ بالا را به خوبی حفظ کند. بازار دسکتاپ، ریشهٔ پیشنهادات و یک بازار قوی و مهم برای کیوت است؛ در این مرحله است که بیشترین تماس‌ها با ما و در انجمن‌های کیوت از طرف کاربران صورت می‌گیرد که باید سالم نگه‌ داشتن و رشد آن مهم باشد. بزرگترین بخش از رشد کیوت نیز مربوط به دستگاه‌های تعبیه شده و متصل شده می‌باشد؛ صفحات نمایش لمسی به تعداد تصاعدی در حال افزایش است که در کنار آن افزایش قیمت سخت‌افزار برای این دستگاه‌ها وجود دارد. چیپست‌های کم مصرف، میکرو‌کنترلر‌ها، همراه با صفحه نمایش لمسی به اندازه‌های کوچک در همه جا استفاده می‌شوند. بسیاری از این دستگاه‌ها عملکردی نسبتاً ساده‌ای دارند، اما به رابط کاربری صیقلی و صافی نیاز دارند. بنابراین حجم زیادی از این دستگاه‌ها ایجاد می‌شود و ما باید اطمینان حاصل کنیم که می‌توانیم با ارائهٔ خود آن فضا را هدف قرار دهیم تا بتوانیم قوبل مقیاس پذیری خود را عملی کنیم. در عین حال، رابط‌های کاربری در طیف دستگاه‌‌ها همچنان به افزایش پیچیدگی ادامه می‌دهند که شامل هزاران صفحه مختلف و برنامه‌های بسیاری است. ادغام عناصر سه بعدی و دو بعدی در یک رابط کاربری مشترک خواهد بود که در کنار آن استفاده از واقعیت افزوده و مجازی نیز وجود خواهد داشت. عناصر هوش مصنوعی بیشتر در حوزهٔ برنامه‌ها و دستگاه‌ها مورد استفاده قرار می‌گیرد و ما نیاز به روش‌های آنسان برای ادغام با آن‌ها داریم. رشد شدید تعداد دستگاه‌های متصل به هم و همچنین الزامات بسیار بالاتر در تجربه‌کاربر باعث می‌شود تا برای ساده سازی ایجاد برنامه‌ها و دستگاه‌ها، روی ابزار‌های کلاس جهانی تمرکز کنیم. هماهنگ سازی و ادغام طراحان UX در گردش کار توسعه یکی از اهداف است؛ اما بسیاری از زمینه‌های دیگر وجود خواهد داشت که ما باید برای ساده سازی زندگی کاربران تلاش کنیم. کیوت ۶ یک نسخهٔ اصلی و جدید برای Qt خواهد بود؛ هدف اصلی با چنین نسخهٔ اصلی و جدید، آماده سازی کیوت برای شرایط مورد نیاز در سال ۲۰۲۰ و بعد از آن، تمیز کردن کد‌های پایهٔ ما و حفظ آسان‌تر است. به همین ترتیب تمرکز روی آن مواردی خواهد بود که نیاز به تغییرات معماری در کیوت دارند و بدون شکستن برخی از سازگاری‌ها با سری‌های کیوت ۵ قابل انجام نیست. در زیر برخی از تغییرات اساسی که ما باید در کیوت ایجاد کنیم برای مناسب‌تر کردن آن برای سال‌های آینده ارائه شده است. نسل بعدی کیو‌اِم‌اِل (QML) زبان QML و فناوری Qt Quick فناوری‌های اصلی رشد سال‌های گذشتهٔ ما بوده است. روش‌های بصری ایجاد واسط‌های کاربری با استفاده از آن فناوری‌ها نقطه فروش بی نظیری از پیشنهاد ما است. اما QML، همانطور که برای کیوت ۵ ایجاد شده است، دارای تعداد زیادی تغییرات ناگهانی و محدودیت است. این به نوبهٔ خود به این معنا است که، امکان پیشرفت‌های چشم‌گیری وجود دارد که ما قصد داریم با کیوت ۶ آن‌ها را پیاده سازی کنیم. معرفی وابستگی زیاد به نوع (strong typing)، وابستگی کم به نوع (weak typing) امکان ایجاد تغییر در کدها را برای کاربران ما سخت می‌کند. سیستمی از مدل وابستگی زیاد به نوع امکان پشتیبانی از این تغییرات را در محیط‌های یکپارچهٔ توسعهٔ نرم افزار و سایر ابزارها به کاربران می‌دهد و به طور چشمگیری حفظ و نگهداری از آن‌ها را راحت می‌کند. همچنین، قادر به تولید کدهای اجرایی هرچه بهتر و با سربار کمتر خواهیم بود. اعمال JavaScript به عنوان یک ویژگی اختیاری، با توجه به این موضوع، داشتن یک موتور کامل جاوا اسکریپت هنگام استفاده از QML می‌تواند مشکلات را پیچیده‌تر کند و به خصوص هنگام هدف قرار دادن سخت‌افزار کم مصرف مانند میکرو کنترلرها یک مشکل اصلی محسوب می‌شود. اما در بسیاری از موارد استفاده از آن بسیار مفید است. حذف نسخه سازی QML، با ساده کردن برخی از قوانین بررسی و جستجو و تغییرات در برخی از خواص می‌توانیم نیاز به نسخه را در QML حذف کنیم. این به نوبهٔ خود منجر به ساده سازی‌های زیاد در موتور کیو‌ام‌اِل می‌شود. حجم کار در حفظ فناوری کیوت کوئیک و ساده‌تر کردن استفاده از QML و Qt Quick را برای کاربران بسیار ساده‌تر خواهد کرد. حذف ساختار داده‌های تکراری بین QObject و QML در حال حاضر، برخی از ساختار داده‌ها بین meta-object و QML کپی و تکرار می‌شوند و عملکرد (کارایی و پرفرمنس) را در استارتاپ برنامه کاهش می‌دهد و باعث افزایش مصرف حافظه نیز می‌گردد. بنابراین با متحد کردن ساختار‌های داده‌ها، ما قادر خواهیم بود بخشی اعظمی از آن را حذف کنیم. خودداری کردن از ساختار‌های داده تولید شده این مربوط به نکتهٔ قبل است، جایی که در حال حاضر بسیاری از ساختار‌های داده تکراری در زمان اجرا تولید می‌شوند. باید تولید اکثر آن‌ها در زمان کامپایل کاملاً امکان‌پذیر باشد. پشتیبانی از کامپایل QML برای بهره‌وری از کد‌های بومی C++، با وابستگی زیاد به نوع و قوانین جستجوی ساده‌تر، می‌توانیم QML را به کد‌های بومی C++ تبدیل کنیم که نتیجهٔ آن به طور قابل توجهی عملکرد زمان اجرا را افزایش می‌دهد. پشتیبانی از پنهان کردن جزئیات اجرا، روش و خصوصیات «خصوصی» یک نیاز طولانی مدت است تا بتوانید داده‌ها و عملکرد‌ها را در اجزای QML پنهاد کنید. هماهنگ‌سازی و ادغام بهتر ابزار‌ها، مدل کد‌های ما غالباً برای QML ناقص است و باعث می‌شود که تغییر مکان و خطاها را در زمان کامپایل غیر ممکن کند. با تغییرات فوق، می‌توان تشخیص کامپایلر را ارائه داد که بتواند با C++ و همچنین پشتیبانی از آن پالایشِ کد‌ها را بهبود بخشد. نسل بعدی گرافیک‌ها بسیاری از موارد در حوزهٔ گرافیک در نسخهٔ کیوت ۵ تغییر یافته‌اند. این باعث می‌شود که برای حفظ رقابت و توسعه در پُشته انجام شود. با کیوت ۵، ما از رابط‌های برنامه‌نویسی OpenGL را برای گرافیک‌های ۳ بعدی استفاده کردیم. از آن زمان به بعد، میزبانی از رابط‌‌های برنامه‌نویسی جدید نیز تعریف شده است. بنابراین وُلکان (Vulkan) جانشین مشخصی برای OpenGL در لینوکس است، اپل نیز مِتال (Metal) را تحت فشار قرار داد تا آن را جایگزین کند و مایکروسافت DirectX را دارد. این بدان معنی است که کیوت در آینده مجبور است به صورت یکپارچه با تمام رابط‌های برنامه‌نویسی کار کند. برای اینکه این ویژگی امکان‌پذیر باشد، باید یک لایهٔ جدید که رابط‌های برنامه‌نویسی گرافیکی را انتزاع می‌کند مانند (QPA برای ادغام سکو) به نام رابط سخت‌افزاری RHering تعریف شود. ما نیز باید زیر ساخت‌های ارائه شدهٔ خود (Qt Quick Scenegraph، QPainter و پشتیبانی ۳ بعدی) را در بالای آن لایه قرار دهیم. مجموعهٔ رابط‌های برنامه‌نویسی گرافیکی مختلف باعث می‌شود که ما از زبان‌های مختلف سایه‌زنی پشتیبانی کنیم. ابزار Qt Shader به عنوان یک ماژول به ما کمک می‌کند تا سیستمِ سایه‌زنی را به صورت هم‌زمان (کراس‌-کامپایل) و در زمان اجرا کامپایل کنیم. بحث ۳ بعدی نقش مهم و مهمتری را ایفا می‌کند، و پشتیبانی فعلی ما یک راه حل یکپارچه برای ایجاد رابط کاربری (UI) ‌هایی که حاوی هر دو عنصر ۲ و ۳ بعدی باشد را ندارد. ادغام QML با محتوا از Qt3D و یا Qt 3D Studio در حال حاضر کار دشواری است و باعث سر‌ریز شدن برخی از کارایی‌ها و عناصر نمایشی می‌شود. علاوه بر این همگام سازی انیمیشن‌ها و انتقال‌ها بر روی یک فریم با سطح فریم بین محتوای ۲ و ۳ بعدی غیر ممکن است. ادغام جدید محتوای ۳ بعدی با فناوری کیوت کوئیک با هدف حل این مشکل ایجاد شده است. در این حالت، یک سیستم ساخت (رندر) کامل و جدید به شما امکان می‌دهد تا محتوای ۲ و ۳ بعدی را با هم ظبط کنید. با این کار QML به زبان UI تعریف و تبدیل می‌شود که سه بعدی هستند و نیاز به فرمت UIP برطرف می‌شود. ما یک پیش‌نمایش از کیوت کوئیک جدید با پشتیبانی سه بعدی در حال حاضر با کیوت ۵.۱۴ ارائه می‌دهیم که اطلاعات بیشتر در یک پست جداگانه ارائه خواهد شد. سرانجام پشتهٔ گرافیکی جدید نیاز به پشتیبانی از خط لولهٔ برای چیز‌های گرافیکی هستند که این امکان را می‌دهد تا آن‌هایی که در زمان کامپایل برای سخت افزار مورد نظر تهیه شده‌اند آماده کرده و از موارد مورد نظر استفاده کند. برای مثال، فایل‌های PNG را به بافت‌های فشرده تبدیل می‌کند و بسیاری از آن‌ها را به بافت (Texture) تبدیل کند. سایه‌ها و مِش‌ها را به قالب‌های باینری بهینه شده و موارد دیگر تبدیل خواهد کرد. همچنین هدف ما این است که یک موتور متحد برای پوسته/ظاهر در کیوت ۶ ارائه دهیم که به ما این امکان را می‌دهد تا از نظر ظاهری و احساسات بر روی دسکتاپ و موبایل آن را بر روی هر دو فناوری کیوت‌ ویجت و کیوت‌ کوئیک ارائه کنیم. ابزار یکپارچه و سازگار ابزار‌های گرافیکی ما برای ساخت رابط‌های کاربری به دو بخش با استودیو کیوت ۳ بعدی (Qt 3D Studio) و استودیو طراحی کیوت (Qt Design Studio) تقسیم بندی شده‌اند. علاوه بر آن، استودیو ۳ بعدی اند;ی از بقیه کیوت جدا شده است که باعث می‌شود کمی بیشتر سعی بر آن شود! ابزار‌های طراحی نیز به ایجاد محتوا مانند، محتوای ساخته شده در Photoshop، Sketch، Illustrator، Maya، 3DsMax و دیگر موارد ادغام شده است. ابزار‌های توسعه به توجه زیادی برای تمرکز دارد تا بتوانیم بهترین‌ها را در پشتیبانی کلاس برای QML، C++ و پایتون ارائه دهیم. یک ابزار متحد و یکپارچه این اجازه را می‌دهد که یک طراح UX بتواند از قابلیت‌های طراحی در کیوت کریتور استفاده کند و طراحان می‌توانند از ویژگی‌های ابزار‌های توسعه‌دهنده مانند تهیه یک پروژه یا آزمایش روی یک دستگاه بهره‌مند شوند. ابزار ساخت QMake به عنوان ابزار ساخت در کیوت ۵ مورد استفاده قرار می‌گیرد که تعداد زیادی تغییرات ناگهانی و محدودیت‌ها خواهد دارد. برای کیوت ۶، هدف ما این است که CMake را به عنوان سیستم ساخت ثالث و استاندارد برای ساخت خود کیوت استفاده کنیم. چرا که سی‌میک تاکنون پرکاربرد‌ترین سیستم ساخت در جهان برای سی‌پلاس‌پلاس بوده است و ادغام هرچه‌بهتر آن کاملاً مورد نیاز است. البته پشتیبانی از QMake ادامه خواهد داشت، اما آن را توسعه نخواهیم داد یا از آن برای ساخت فریم‌ورک کیوت استفاده نخواهیم کرد. بهبود رابط‌های برنامه‌نویسیC++ سی‌پلاس‌پلاس طی سال‌های گذشته تغییرات بسیار زیادی کرده است؛ در حالی که ما مجبور بودیم کیوت ۵.۰ را روی سی‌پلاس‌پلاس ۹۸ پایه‌گذاری کنیم. اما اکنون می‌توانیم به سی‌پلاس‌پلاس ۱۷ برای پایه‌گذاری کیوت ۶ اطمینان کنیم. این بدان معنی است که C++ عملکرد بسیار بیشتری را نسبت به زمان توسعه و اجرای کیوت ۵ که در دسترس نبود ارائه خواهد کرد. هدف ما با کیوت ۶ بهتر شدن با یکپارچه‌سازی و ادغام قابلیت‌ها بدون از دست دادن پشتیبانی و سازگاری از روش‌های پیشین (رو به عقب یا همان backward compatibility) است. برای کیوت ۶، هدف ما این است که برخی از قابلیت‌های معرفی شده با QML و فناوری Qt Quick را از طرف C++ در دسترس قرار دهیم. بنابراین ما در تلاش برای معرفی یک سیستم خاص برای QObject و کلاس‌های مرتبط هستیم. موتور اتصال دهنده را از QML در هستهٔ کیوت ادغام می‌کنیم و آن را از سی‌پلاس‌پلاس در دسترس قرار می‌دهیم. این سیستم خاص از موتور اتصال به کاهش قابل توجهی در سربار زمان کار و مصرفه حافظه در اتصال منجر می‌شود و آن‌ها را برای همهٔ قسمت‌های Qt، نه تنها Qt Quick قابل دسترس می‌کند. پشتیبانی از زبان با کیوت ۵.۱۲، پشتیبانی از پایتون معرفی شده است. همچنین مرورگر را به عنوان پلتفرم جدید از طریق کیوت برای وِب اسمبلی اضافه کرده‌ایم. پس از انتشار کیوت ۶.۰ نگه‌داشتن و گسترش بیشتر بر روی سطح چند‌-سکویی بخش مهمی از اهداف و مسیر توسعهٔ سری‌های کیوت ۶ خواهد بود. سازگاری با کیوت ۵ و افزایش سازگاری‌ها و بهبود‌ها سازگاری با نسخه‌های قدیمی‌تر بسیار مهم است، بنابراین وقتی کیوت ۶ را توسعه می‌دهیم یک نیاز اساسی محسوب می‌شود. توسط چهارچوب کیوت میلیون‌ها خط کد نوشته شده است و هرگونه تغییرات در ناسازگاری که انجام شود هزینه‌ای را برای کاربران خواهد داشت. علاوه‌ بر این، کار بیشتری برای تغییرات در کیوت ۶ نیاز است تا کاربران کم کم با آن سازگار شوند که منجر به هزینه‌های بیشتر از طرف تیم توسعهٔ کیوت برای حفظ آخرین نسخه کیوت ۵ خواهد بود. به این ترتیب، ما باید به فکر جلوگیری از ساطع شدن خطاهای احتمالی در زمان کامپایل و یا زمان اجرا برای کاربران می‌شود باشیم. در حالی که ما نیاز به حذف بخش‌هایی از کیوت خواهیم داشت، باید اطمینان حاصل کنیم که کاربران ما از عملکرد مورد نیاز خود برخوردار هستند. این بدان معنا است که کلید‌هایی مانند Qt Widgets و سایر قسمت‌هایی که توسط بخش بزرگی از کاربران ما مورد استفاده قرار می‌گیرد، در دسترس باشد. ما در حال برنامه‌ریزی برای افزایش بسیاری از پیشرفت‌ها در کلاس‌های اصلی و عملکردی هستیم که در سری کیوت ۵ نتوانستیم انجام دهیم. هدف این است که سازگاری کامل منبع را حفظ کنیم، اما از آنجا که می‌توانیم سازگاری باینری را با کیوت ۶ بشکنیم، می‌توانیم پاک‌سازی‌ها و اصطلاحات کاملاً زیادی را انجام دهیم که در کیوت ۵ نمی‌توانستیم آن را عملی کنیم. با این وجود، ما باید به جلو پیش برویم و برخی از پاک‌سازی‌ها که در کیوت ۵ در مورد کلاس‌ها، توابع و یا ماژول‌ها عنوان شده بود را در کیوت ۶ به طور کامل اعمال کنیم. این کار باعث می‌شود ما روی مبنای کد‌گذاری شدهٔ فعلی تمرکز بیشتر و بهتری داشته باشیم. با این حال، انتقال به دور از قسمت‌های منسوخ شده باید تا حد امکان ساده باشد و کاربران ما می‌توانند با استفاده از کیوت ۵.۱۵ «پشتیبانی بلند مدت» به صورت ایده‌آل این کار را انجام دهند. هدف ما باید این باشد که کیوت ۶ به اندازهٔ کافی با نسخهٔ ۵.۱۵ سازگار باشد تا فرد بتواند به راحتی یک بخش اعظمی از کد خود را حفظ کند، به طوری که کد آن در هر دو نسخهٔ ۵ و ۶ قابل کامپایل باشد. بازار و ساختار فنی محصول علاوه بر بهبود چهارچوب و ابزار‌های کیوت، هدف ما ایجاد بازار جدیدی برای قطعات و ابزار‌های توسعه است. این بازار بر روی کاربران مستقیم ما متمرکز خواهد شد که برنامه‌های کاربردی و دستگاه‌های تعبیه شده را طراحی و توسعه می‌دهند؛ به این ترتیب این یک مرکز تجمع اصلی برای اکو سیستم کیوت خواهد بود که این امکان را به شخص ثالث می‌دهد تا نسخه‌های اضافی خود را در کیوت منتشر کنند و هم محتوای رایگان و تجاری را که برای آن هزینه پرداخت می‌کنند. کیوت طی سال‌های گذشته رشد بسیار زیادی داشته است، تا جایی که ارائهٔ نسخهٔ جدید آن یک کار مهم است. با استفاده از کیوت ۶ فرصتی برای باز‌سازی محصولات ارائه شده ما وجود دارد و یک محصول اصلی و کوچکتر که شامل چهارچوب‌ها و ابزار‌های اساسی است. ما از بازار استفاده خواهیم کرد تا چهارچوب و ابزار‌های اضافی خود را ارائه دهیم، نه به عنوان یک بسته‌نرم‌افزاری وابسته به کیوت! چشم‌انداز فنی تا اولین نسخهٔ کیوت ۶ تکامی خواهد یافت. اگرچه معتقد هستیم که این سند بسیاری از مهمترین نکات را برای نسخهٔ بعدی کیوت معرفی می‌کند اما مطمئناً کامل نیست. اگر شما هم ایدهٔ دیگری دارید می‌توانید آن را با ما در میان بگذارید.
  12. سلام من برای اینکه یک آرایه از داده ها رو در qml نمایش بدم از ChartView و LineSeries استفاده می کنم و دستور append رو برای LineSeries در تایمر فراخوانی می کنم. میخوام وقتی یک بار عرض صفحه پیمایش شد، برای اینکه real time بودن گراف نشون داده بشه، یک eraser تعریف کنم که هر بار چند پیکسل از داده های جلوی خط رو حذف کنه و گراف رو بروز رسانی کنه. با تعریف دو LineSeries به نتیجه دلخواه نمی رسم ، میخواستم بپرسم کسی تجربه این در این زمینه داره که به اشتراک بگذاره؟ Rectangle { id: myRect width: 600 height: 400 anchors.centerIn: parent LinearGradient { anchors.fill: parent } ChartView { id: chartView anchors.centerIn: parent width: 600 height: 400 backgroundColor: "transparent" title: "My Graph" titleColor: Qt.rgba(.5,.5,.5,1) titleFont.pointSize:10 anchors.fill: parent antialiasing: true anchors { fill: parent; margins: 5 } margins { right: 0; bottom: 0; left: 0; top: 0 } Component.onCompleted: { axisX(lineSeries).visible = false axisY(lineSeries).visible = false } Rectangle { id: rec height:parent.height x: 30 y: 50 width: 1 color: "red";// "transparent" } ValueAxis { id: axisX min: 0 max: 100 color: "transparent" labelsFont:Qt.font({pointSize: 10}) } ValueAxis { id: axisY min: -300 max: 300 color: "transparent" } LineSeries { id: series1 axisX: axisX axisY: axisY name: "From QML" useOpenGL: chartView.openGL color: "#44D77B" width: 1 pointLabelsColor: "red" } LineSeries { id: series2 axisX: axisX axisY: axisY name: "From QML" useOpenGL: chartView.openGL color: "#44D77B" width: 1 pointLabelsColor: "red" } } } Timer { interval: 50 repeat: true running: true onTriggered: { series1.append( timeStep , myArray[index]); if(index == 400) { index =0; series1.clear(); //series2.clear(); timeStep=0; first = true; timeStep1 = 5; index1 = 5; } //updateRectangle(); print("index : " , index); timeStep+= 1;// 0.25; index++; } } ممنون
  13. dorche

    سلام برای استفاده از ماژول های private متریال چه کاری باید انجام داد؟ به عنوان مثال : import QtQuick.Controls.Material.impl 2.12 quickcontrols2impl-private را نمی شود وارد کرد و خطای Unknown module می دهد. این فایل qquickiconlabel.pro (لینک) رو هم نگاه کنید. Ripple که در Button متریال استفاده شده را احتیاج دارم.
  14. Morteza Abdolrahimi

    سلام . من مرتضی عبدالرحیمی هستم. یه مشکلی داشتم گفتم با شما درمیان بزارم و اگه تونستید راهنمایی کنید. دو فانکشن نوشتم در کیوتی که یکی برای نمایش و دیگری برای عدم نمایش یک busy indicator or busy processing هستش وقتی در یک پروسه ازشون استفاده میکنم نمایش داده نمیشه و وقتی که در یک کلید که کلیک میشود نمایش داده میشه . قبلا از راهنمایی شما تشکر میکنم. کد برنامه : void FormSend::ShowProcessing() { int WIDTH = 150; int HEIGHT = 150; int screenWidth = FormSend::width(); int screenHeight = FormSend::height(); int x = (screenWidth - WIDTH) / 2; int y = (screenHeight - HEIGHT) / 2; qProcessLabel = new QLabel(this); qProcessMovie = new QMovie(":/new/prefix1/Icons/processing_1.gif"); qProcessMovie->setCacheMode(QMovie::CacheAll); qProcessLabel->setScaledContents(true); qProcessLabel->setAlignment(Qt::AlignTop|Qt::AlignCenter); qProcessLabel->move( x, y ); qProcessLabel->setFixedSize(WIDTH, HEIGHT); qProcessLabel->setMovie(qProcessMovie); qProcessLabel->show(); qProcessMovie->start(); } void FormSend::HideProcessing() { qProcessMovie->stop(); qProcessLabel->hide(); }
  15. این تاپیک جهت معرفی و اطلاع رسانی در رابطه با اهداف نسخه‌های جدید، به‌روز‌رسانی‌ها، تاریخ انتشار و موارد مرتبط با آن ایجاد شده است. در این تاپیک به موضوعات مرتبط خواهیم پرداخت. جهت شروع نسخهٔ ۵.۱۲.۰ کیوت با پشتیبانی LTS را معرفی می‌کنیم. همانطور که می‌دانید کمپانی و تیم توسعه‌دهنده با فعالیت‌های بسیار زیاد خود مُدام در حال به‌روز رسانی و حل مشکلات بازخورد شده از سمت کاربران برای این کتابخانه هستند. بر خلاف نسخه‌های پیشین نسخه‌های سری ۵ با به‌روز‌رسانی‌های پی‌در‌پر مواجه شده است که شاید این بزرگترین تمایز تیم توسعه دهنده در نسخه‌های قبلی است. کتابخانهٔ کیوت معمولاً در نسخه‌های اصلی از ویژگی‌ها و تغییرات چشمگیری مواجه می‌شود که می‌توان آن‌ها را در تغییرات یا افزوده شدن به ماژول‌های هسته، فرعی و افزونه‌های آن اشاره کرد. البته به این مورد نیز باید اشاره کنیم که این به‌روز‌رسانی‌ها تنها برای خود کتابخانه نبوده و معمولاً محیط توسعهٔ آن نیز همراه خود به‌روز‌رسانی و حتی به صورت جداگانه منتشر می‌شود که در اینجا تاپیک مخصوص آن آورده شده است. از آنجایی که انتظار می‌رود کیوت در نسخهٔ ۵.۱۲.۰ با به‌روز‌رسانی‌های اساسی آمده است. یکی از مهمترین آن‌ها تغییر بر روی کامپایلر‌ها و پشتیبانی کامل از استاندارد‌های جدید C++ است. در این نسخه کامپایلر‌های GCC به نسخهٔ ۸ و کامپایلر‌های Clang به نسخهٔ ۷ و مهمتر از همه در محیط ویندوز به‌روز رسانی MinGW به نسخهٔ ۷ بوده است. البته ناگفته نماند با توجه به تغییرات اخیر گوگل در NDK که اعلام کرده است کامپایلر پیشفرض GCC به Clang تغییر کرده است این تغییر نیز در کیوت اعمال و با هماهنگی ۱۰۰٪ از ویژگی‌های جدید توسعه اندروید هماهنگ شده است. بنابراین شما در بخش کیت‌ها شاهد وجود کامپایلر‌های متعددی خواهید بود که به‌روز رسانی شده اند. نکتهٔ مهم برای توسعه دهندگان ویندوز : اگر به خاطر داشته باشید در نسخه‌های ۵.۱۰.۰ به بعد کامپایلر ۳۲ بیتی MSVC به طور غیر منتظره‌ای حذف شده بود که با بازخورد کاربران روبرو و در نهایت در این نسخه نسخهٔ ۳۲ بیتی کامپایلر MSVC افزوده شده است. مهمترین به‌روزرسانی‌های کیوت ۵.۱۲.۰ ویژگی‌های اضافه شده به هسته: افزوده شدن ویژگی جدید CBOR به عنوان فرمت جدید همانند JSon برای سریالیز داده‌ها. افزوده شدن متد hashLength برای QCryptographicHash که طول خروجی هَش شده را بر می‌گرداند. افزوده شدن متد wildcardToRegularExpression به QRegularExpression جهت معرفی راحت‌تر کد کاربر. افزوده شدن متد anchoredPattern به QRegularExpression جهت پیاده سازی تطبیق کد کاربر. افزوده شدن QRegularExpression برای کلاس QSortFilterProxyModel ویژگی‌ها و تغییرات در QtGui افزوده شدن پشتیبانی از ویژگی Windows UI Automation در WinRT QPA برای برنامه‌های مبتنی بر UWP که آن را قادر می‌سازد تا با ابزار‌های قابل دسترس در سمت UI دسترسی داشته باشند. جایگزین شدن ویژگی‌های مرتبط با دستگاه‌های ورودی mouse، touchpad، touchscreen و tablet با ویژگی‌های متحد بر پایهٔ ویندوز ۸ و جدیدتر. افزوده شدن QGradient جدید بر پایه https://webgradients.com افزوده شدن فرمت‌های 4xU16 ،RGBA64 به QImage جهت خواندن فرمت‌های PNG و TIFF و همچنین امکان آپلود و گرفتن آن‌ها از OpenGL. ویژگی‌ها و تغییرات در QtNetwork افزوده شدن DTLS برای پشتیبانی از UDP افزوده شدن یک بازنگری مجدد برای ترنسفر ایمن در بک‌اِند. افزوده شدن پشتیبانی از ALPN در پروتکل HTTP/2 جهت امنیت ترنسفر اطلاعات. افزوده شدن پشتیبانی از ویژگی PKCS#8 در بک‌اِند عمومی (WinRT و ترنسفر اطلاعات) افزوده شدن QPasswordDigestor به عنوان یک فضای نام که شامل توابعی برای استخراج کلید بر پایه رمزعبور می‌باشد (در حال حاضر PBKDF1 و PBKDF2) در دسترس هستند. ویژگی‌ها و تغییرات در QtQml پشتیبانی از موتور نسخهٔ ۸ جاوا اسکریپت فراهم شده است (ECMAScript 7) ماژول ECMAScript می‌تواند به طور مستقیم توسط QJSEngine::importModule() بارگذاری شود و می‌تواند فایل‌های .qml را در زمان استفاده از فایل‌های .mjs را فراهم سازد. ویژگی‌ها و تغییرات در QtQuick نوع‌های Pointer Handlers به Input Handlers تغییر نام پیدا کرده‌اند (البته ویژگی‌های مربوط به این دسته در این شاخه وجود دارند) و اکنون به طور کامل به عنوان یک ویژگی پشتیبانی شده در یک کلاس QML تحت Qt Quick پشتیبانی می‌شود. (رابط‌های برنامه‌نویسی سمت سی‌پلاس‌پلاس برای آن‌ها هنوز عمومی نشده است). نوع HoverHandler نوع جدیدی برای شناسایی ویژگی Mouse hover می باشد. این ویژگی‌ می‌تواند شناور ماوس را در موارد عمیقی شناسایی کند. بر خلاف MouseArea، شما می‌توانید چندین آیتم با HoverHandler به صورت هم‌زمان قرار دهید (برای مثال نوار کناری (SideBar) و یک دکمه‌ بر روی آن. نوع DragHandler به عنوان یک نوع چند-نقطه‌ای بشمار می‌رود. اگر شما مقدار minimumPointCount را به ۲ تغییر دهید، به کشیده شدن تنها با دو انگشت واکنش نشان خواهد داد. این ویژگی می‌تواند به مراتب آزادی‌های بیشتری را در توسعه به شما ارائه دهد. کشیده شدن توسط یک انگشت می‌تواند یک حرکت خاص را انجام دهد و کشیده شدن توسط دو انگشت می‌تواند کارهای دیگری را انجام دهد (به عنوان مثال زاویهٔ شیب را تغییر دهد). افزوده شدن پشتیبانی از مخازن از پیش تولید شدن جهت سرعت بخشید به اجرا در زمان استارت‌آپ. افزوده شدم آیتم TableView به عنوان یک نوع دیگری از نوع Item View همانند ListView که بر خلاف آن ویژگی چند ستونه شدن را دارا می‌باشد. بر خلاف Qt Quick 1.x ویژگی ظاهری برای آن طراحی نشده است. اما جای آن فراهم شده است تا توسط delegates ها بتوانید بر اساس تقاضا آن‌ها را فراهم کنید. ویژگی DelegateChooser به عنوان پیش نمایشی از تکنولوژی ارائه شده است که به عنوان delegate های Item Views ها مانند TableView بسته به مقادیر آن‌ها کاربرد دارد. ویژگی‌ها و تغییرات در QtQuick Controls 2.x کنترل Dial ویژگی inputMode را اضافه کرده است. که دو روش جدید جهت تعامل به صورت عمودی و افقی را فراهم می‌کند. این ویژگی‌های ورودی از یک سیستم ورودی نسبی استفاده می‌کنند. به این معنی است که بر خلاف سیستم ورودی مطلق قبلی، اغییرات در موقیع شماره گیری به آن اعمال می‌شود. این ویژگی در نتیجهٔ آن تاثیر می‌گدارد و باعث می‌شود شماره گیر پرش کمتری داشته و آن را از عملیاتی که ممکن است مضر باشد تضمین کند. کنترل Popup ویژگی‌های leftInset، bottomInset، topInset و rightInset را به بخش پس زمینه مشابه کنترل‌های paddings در contentItem اضافه کرده است. اضافه شدن خاصیت‌های implicitWidth و impliciyHeight ویژگی‌های implicitHeaderWidth و implicitContentWidth و غیره برای ساده سازی پیوند‌های اندازهٔ ضمنی و پیچیده ارائه شده است. در کنترل‌های SwipeView و DialogButtonBox خاصیت‌های contentWidth و contentHeight افزوده شده است. در کنترل RageSlider خاصیت valueAt() به عنوان تابع اضافه شده است، که اجازه می‌دهد تا مقادیر در هر زمان از تغییر برای tooltip به‌روز و تنظیم شوند. در کنترل RangeSlider خاصیت‌های first.mode() و second.mode() به عنوان سیگنال‌هایی مشابه سیگنال moved() اضافه شده‌اند. در آیتم پایه Control، در صورتی که به صراحت مشخص شده باشد، baselineOffset به صورت خودکار فاصلهٔ بالای کنترل و baselineOffset از contentItem را کنترل می‌کند. مشخص سازی استایل برای این کنترل نیاز نیست. در کنترل Popup، خاصیت‌های anchors.centetIn به عنوان یک راه حل مناسب اجازه تنظیم مرکز یک popup را می‌دهد. آیتم QQuickStyle، افزوده شدن ویژگی‌های stylePathList() و addStylePath() به عنوان مدیریت فهرستی از سبک‌های موجود در کیوت کوئیک کنترل ۲ را فراهم می‌کند. کنترل Slider، RangeSlider ویژگی touchDragThreshold را برای پیکربندی آستانهٔ شروع کشیدن (لمس) لغزنده فراهم می‌کند. کشیدن ماوس در این ویژگی تاثیری ندارد. در کنترل‌های TextArea و TextField خاصیت placeHolderTextColor برای راحتی کار برای افزودن رنگ در متن پیشفرض و نمایشی در پس زمینهٔ کنترل اضافه شده است. در ویژگی Material، یک سری موارد مورد استفادهٔ انبوه برای استفاده از این سبک در پلتفرم‌های دسکتاپ افزوده شده است.برخی از کنترل‌ها از ارتفاع و اندازهٔ قلم کوچکتری استفاده می‌کنند. جهت پیکربندی آن نیز می‌توان از متغیر QT_QUICK_CONTROLS_MATERIAL_VARIANT جهت مشخص سازی تراکم و یا با تنظیم Variant=Dense در فایل پیکربندی qtquickcontrols2.conf استفاده کرد. کنترل DialogBoxButton خاصیت buttonLayout به آن اضافه شده است که می‌تواند برای ترتیب و مرتب ساختن دکمه‌ها از آن استفاده شود. کنترل Tumbler، تابع positionViewAtIndex() را اضافه کرده است که می‌تواند عملکرد توابع مربوط به PathView و ListView را بسته به مقدار آن‌ها بسته بندی کند. این امکان اجازه می‌دهد تا مقدار currentIndex بدون انیمیشن تغییر یابد. در Control و Popup، خاصیت‌های horizontalPadding و verticalPadding به عنوان روش مناسب جهت تنظیم جپ و راست و یا بالا و پایین فاصله‌ها در یک حرکت در نظر گرفته شده است. کنترل Tooltip، روش‌های show() و hide() را برای نمایش پارامتر‌های خاص اضافه کرده است. ویژگی‌ها و تغییرات در QtSerialBus افزوده شدن یک افزونهٔ مجازی CAN برای شبیه سازی CAN بدون سخت‌افزار. افزوده شدن گزینه‌های پیکربندی برای canbusutil برای عنوان برای تنظیم میزان بیت‌ریت. افزوده شدن CAN FD به پلاگین PeakCAN. افزوده شدن توابع readAllFrames() و clear() به QCanBusDevice. ویژگی‌ها و تغییرات در QtWebEngine به‌روز رسانی شده به Chromium 69 رابط QWebEngineUrlScheme برای تنظیم و پیکربندی نوع و امنیت در طرح‌های سفارشی URL. ویژگی‌های WebActions در معرض QML قرار گرفته‌اند. اکنون می‌توان صفحه‌هاتی که آن‌ها را خوانده وی ا از آن‌ها دانلودی صورت گرفته است را خواند. گواهی‌نامه‌های SSL از این پس پشتیبانی می‌شوند. خواندن آن‌ها از تنظیمات macOS و Windows و بانک اطلاعاتی NSS در Linux امکانپذیر است. ویژگی‌ها و تغییرات در Qt Labs Platform در آیتم‌های Menu، MenuItem و SystemtryIcon خاصیت iconName و iconSource منسوخ شده است. در آیتم‌های Menu، MenuItem و SystemtryIcon خاصیت icon.mask افزوده شده است. ویژگی‌ها و تغییرات در Qt Virtual Keyboard یک رابط واسط برای کلید مجازی تعریف شده است. تمامی روش‌های ورودی فعلی و برخی از ویژگی‌های ویژهٔ لایه‌های آن مانند Hunspell، OpebWnn و غیره به ویژگی‌های اضافی منتقل شده‌اند. این ویژگی اجازه می‌دهد تا ساخت و ساز‌های نوع سوم بدون دستکاری ورودی‌های پیشفرض این ماژول صورت بگیرد. با معرفی این ماژول افزونه‌های اضافی می‌توانند با آن لینک شوند. این ماژول رابط‌های برنامه‌نویسی لازم ++C را برای ایجاد یک روش ورودی جدید فراهم می‌کند. افزوده شدن گزینهٔ build time به امکان محدود سازی تمامی سبک‌ها در پلاگین را فراهم می‌کند. پشتیبانی از MyScript برای تشخیص دست نویس اضافه شده است. ویژگی تشخیص Vietnamese در دست خط اضافه شده است. افزوده شدن لایه‌های جدید، آلبانی، آمریکایی، انگلیسی، فرانسوی، کانادایی، اندونزیایی، مالایی، پرتغال برزیبی، اسلواکی، اسلوونیایی، اسپانیایی مکزیکی، تایلندی، ترکی، ویتنامی و اکراینی. لایه‌های بیشتر در بارهٔ زبان روسی نیز اضافه شده است. برخی از لغت نامه‌ها به صورت پیش فرض تحت یک افزونه اضافه شده‌اند. فرهنک لغت کاربری Hunspell افزوده شده است. ویژگی‌ها و تغییرات در Qt Bluetooth افزوده شدن توانایی جهت کشف داده‌ها از طریف QBluetoothDeviceDiscovery ویژگی‌ها و تغییرات در Qt 3D افزوده شدن ویژگی جهت بارگیری درون یک فایل که شامل نام و شناسهٔ مشخصی است در بخش نمایه به عنوان انیمیشن فراهم شده است. فعال شدن منحنی‌های ثابت در انیمیشن. رفع مشکلات مربتط با QNodes ها در برخی شرایط. رفع و بهبود در نمایش بافت‌ها در اشیاء نوع TextureImage دیگر به عنوان فرزند بافت در نظر گرفته نمی‌شود. زمانی که در یک حلقهٔ شبیه سازی شده قرار گرفته نشود، استفاده از پردازنده کاهش پیدا خواهد کرد. نوع EntityLoader از این پس قادر به بارگیری از یک Component به خوبی یک فایل است. پشتیبانی از سیستم رندرینگ OpenGL ES 3.1 فراهم شده است. عملکرد‌ها و یک سری باگ‌ها در بخش بک اند رفع و کارآیی آن بهبود داده شده است. ویژگی‌ها و تغییرات در Qt Wayland Compositor افزوده شدن پشتیبانی از نسخهٔ پایدار xdg-shell (همچنین نسخهٔ ناپایدر ۵ آن منسوخ شده است). پشتیبانی از xdg-decoration-unstable-v1 برای سمت سرور جهت اعمال دکوراسیون پنجره‌ها اعمال شده است. ویژگی‌ها و تغییرات در Qt WebSocket تابع "bytesToWrite" به این ماژول افزوده شده است. ویژگی‌ها و تغییرات در Qt Location پلاگین MapboxGL به‌روز‌رسانی شده و پشتیبانی از QNX7 فراهم شده است. حذف خاصیت‌های add و remove و افزوده شدن آن به MapItemView آیتم MapItemView هم‌اکنون کلاس MapItemGroup را طبقه بندی می‌کند و به خودی خوب غیر قابل تغییر می‌باشد. در حال حاضر PlaceSearchModel اجازه می‌دهد تا مدل به صورت پراکنده پُر شود. ویژگی Map.visibleArea جهت محدود کردن مناطق قابل مشاهده بر روی نقشه اضافه شده است. ویژگی geoShape در آیتم‌های مربوط به MapItem به صورت R/W تنظیم شده است و یک تنظیم کننده مجازی در کلاس پایه دارد. پشتیبانی از نگه‌دارندهٔ حفره‌ها در QGeoPolygon فراهم شده است. افزوده شدن پشتیبانی از Route Legs به پلاگین. ویژگی‌ها و تغییرات در Qt Test خطاهای مربوط به std::tuple در زمان استفاده از QCOMPARE تشخیص داده می‌شوند. ماژول‌های جدید افزوده شدن ماژول Qt Remote Objects با پشتیبانی کامل. افزوده شدن پلاگین Qt WebGL Streaming با پشتیبانی از استریم در مرورگر و اپلیکیشن‌های تحت وب. تغییرات مرتبط با پلتفرم‌ها در QTimeZone از ICU در صورتی که در دسترس باشد استفاده می‌کند (اولویت استفاده با Api‌ مایکروسافت می‌باشد). در سیستم‌عامل macOS پشتیبانی از QSurfaceType::MetalSurface فراهم شده است. در macOS پشتیبانی از QSurfaceType::VulkanSurface و QVulkanWindow از طریق MoltenVK فراهم شده است. در Wayland نسخهٔ پایدار xdg-shell افزوده و نسخهٔ ناپایدار ۵ آن منسوخ شده است. با استفاده از پنجره‌های پیشفرض نمایش آن‌ها زیباتر و بهتر شده است. پشتیبانی از ویژگی‌های اضافی xdg-decoration-unstable-v1 و xdg-output-unstable-v1 فراهم شده است. فناوری‌های جدید به عنوان پیش‌نمایش ویژگی Qt for WebAssembly امکان این را فراهم می‌سازد تا برنامه‌های تحت کیوت در بستر مرورگر‌ با استفاده از WebAssembly اجرا شوند. تغییرات مرتبط با Qt for Automation ویژگی Qt MQTT پشتیبانی کامل از پروتکل MQTT سطح ۵ ویژگی Qt KNX پشتیبانی از KNXnet/IP Core نسخهٔ ۲ پشتیبانی از KNXnet/IP Routing نسخهٔ ۱ پشتیبانی از KNXnet/IP Tunneling نسخهٔ ۲ پشتیبانی از KNXnet/IP و برقراری ارتباط از طریق TCP پشتیبانی از KNXnet/IP Secure به صورت پیش نمایش از فناوری ویژگی Qt OPC UA پشتیبانی از Events‌ها افزوده شدن رابط‌های برنامه‌نویسی جهت خواندن به صورت دسته‌ای افزوده شدن رابط‌های برنامه‌نویسی جهت نوشتن به صورت دسته‌ای افزوده شدن یک TranslateBrowsePathsToNodeIds به رابط‌های برنامه‌نویسی رابط‌های مرورگری بهبود یافته شده پشتیبانی از انواع Argument و ExpandedNodeId نود‌ها می‌توانند از این پس از به وسیلهٔ ExpandedNodeId استفاده شوند. پشتیبانی از آرایه های چند بعدی بهبود یافته است. پشتیبانی از خواندن و نوشتن اشیاء اضافی فراهم شده است. ماژول‌های منسوخ (حذف در نسخه‌های بعدی) ماژول Qt Script ماژول Qt Quick Controls 1 ماژول Qt Canvas 3D
  16. انتشار نسخهٔ بتا ۲ از کیوت کریتور ۴.۷ بخش C++ ویژگی‌ مهم این نسخه سازگاری و هماهنگی کامل برای پشتیبانی از کلنگ (Clang) در سی++ می‌باشد. قبل از هر چیز باید اشاره داشته باشیم به اینکه مدل کدینگ به صورت پیش فرض در کیوت کریتور ۴.۷ بر پایه Clang Model تعبیه شده است که به عنوان یک نکته عطف پس از سال‌ها تجربه و توسعه به دست آمده است. به روز رسانی های دیگری در بخش بک اند صورت گرفته است که مرتبط با Clang 6.0 می‌باشد که بهبود‌های بسیاری را به ارمغان می‌آورد. بخش QML مدل کد در QML در حال حاضر شامل حداقل پشتیبانی های مرتبط با شمارنده های تعریف شده از طرف کاربر می باشد که یکی از ویژگیهای جدید در کیوت ۵.۱۰ به بعد بود.علاوه بر این برخی از اشتباهات موجود در این بخش نیز اصلاح شده اند. ویژگی یکپارچه سازی شده برای آزمایش کد در صورتی که نمایشگر ماوس در ویرایستار سی++ در داخل یک تابع آزمایشی قرار گیرد، شما می‌توانید به صورت جداگانه آن را مورد آزمایش قرار دهید که با راست کلیک بر روی منوی محتوا تابع گزینهٔ (Run Test Under Cursor) قابل انتخاب و آزمایش خواهد بود. دیگر بهبود‌ها گزینه های کیت در بالاترین بخش از تنظیمات خود قرار گرفته اند، بنابراین اولین کیت در اولین ردیف از لیست قرار گرفته است. در بخش نمایه از فایلها شما میتوانید پوشه ای بسازید. به صورت پیشفرض از این پس می توانید پوشه ها را قبل از فایل ها نمایش دهید، اما شما می‌توانید با انتخاب گزینه ای در منو نمایش‌های قبلی را رد کنید و یا از روش مرتب سازی بر اساس حروف الفبا استفاده کنید. تغییرات دیگر در این بخش آمده اند.
  17. سلام خدمت دوستان و اساتید گرامی. فرض کنین پنجره‌ای در برناممون داریم که از نوع QWidget هستش و میخوایم مختصات لحظه به لحظه حرکت موس رو بگیریم. خب در این حالت قاعدتا باید تابع QWidget::mouseMoveEvent رو بازنویسی و مطابق با کاری که میخوایم انجام بدیم تعریف کنیم. حالا اگر کاری که میخوایم در داخل تابع QWidget::mouseMoveEvent انجام بدیم زمان‌بر باشه برای جلوگیری از کند شدن برنامه و ایجاد تاخیر و از دست دادن جزئیات حرکت موس چه اقداماتی باید انجام بدیم؟ یکی راهی که به ذهن خودم رسید استفاده از یک نخ جدا برای انجام پردازش زمان‌بر هست ولی از اونجایی که لازمه قبل از اتمام تابع QWidget::mouseMoveEvent از join شدن نخ ایجاد شده اطمینان حاصل کنیم باز هم برنامه دچار تاخیر خواهد شد اگر هم بخوایم بلافاصله بعد از اجرای نخ اونو از نخ ایجاد کنندش جدا (detach) بکنیم بازم مشکل همچنان پا برجاست چون تابع QWidget::mouseMoveEvent پشت سر هم فراخوانی میشه و کلی نخ درست میشه که از نخ اصلی جدا شدن و نمیشه مدیریتشون کرد! در یک چنین وضعی چه کاری باید انجام بدیم؟ سپاس گزارم.
  18. کامبیز اسدزاده

    کتابخانهٔ Qt

    نگارش ۵.۱۵.2

    517 دریافت

    کیوت (به انگلیسی: Qt) مجموعه‌ای از کتابخانه‌ها و سرآیندهای نوشته‌شده به زبان سی++ است که به برنامه‌نویس امکان توسعه آسان نرم‌افزارهای کاربردی را می‌دهد. کیوت شامل چندین کلاس برای کار با واسط گرافیکی، چندرسانه، ابزارهای پایگاه‌داده، شبکه و … است. نرم‌افزارهای نوشته شده با ابزار کیوت قادرند تا با استفاده از یک کامپایلر زبان سی‌پلاس‌پلاس برای طیف وسیعی از سیستم‌عامل‌ها از جمله گنو/لینوکس (نسخه‌های رومیزی و وسیله‌های قابل حمل)، ویندوز، ویندوز CE، مک‌اواس و … همگردانی شوند. بدین ترتیب حمل نرم‌افزار نوشته شده بدون تغییر در متن کد نوشته شده امکان‌پذیر است. از کیوت در زبان‌های برنامه‌نویسی متعددی مانند سی++ و جاوا و پایتون می‌توان استفاده‌کرد. جهت مشاهدهٔ مباحث مرتبط با این کتابخانه به این بخش مراجعه کنید.

    رایگان

  19. سلام وقت همگی به خیر برنامه ای میخوام بنویسم در qt که تصاویر و فیلم دوربین تحت شبکه را بگیرم و ذخیره کنم مثالهایی که تو سایت گیت هاب بود را امتحان کردم ولی اکثرا به کتابخانه هایی وابسته هستند که زیاد معروف نیستند و اجرای آنها هم اکثرا با خطاهای تو در تو مواجه می شود که عمدتا به خاطر کتابخانه هاشون هست با خود opencv تصویر دوربین را با کارت کپچر گرفتم ولی تحت شبکه را هنوز نتوانستم راه بیندازم مثال و یا کدی ندارید که بتونه بهم کمک کنه؟ ممنون
  20. با سلام. از آن جایی که در پنل کافه بازار فقط یک فایل apk که با همه ی معماری های پردازنده سازگار است می توان منتشر کرد با qt 5.12 چطور خروجی باید بگیریم که توسط همه ی پردازنده ها پشتیبانی بشه؟
  21. سلام من میخواهم دوباره مقدار و آیکن اکشن دوم را تغییر دهم. اما جواب نمی‌دهد. چرا؟ Notification.Builder notification = new Notification.Builder ( this ) .setSmallIcon ( R.drawable.ic_play ) .setContentTitle ( "madaraneh.mp3" ) .setContentText ( "madaraneh" ) .setContentIntent ( PendingIntent.getActivity ( this, 0, new Intent ( this, MusicPlayerActivity.class ), 0 ) ) .setOngoing ( true ) .addAction ( R.drawable.ic_rewind, "Rewind", rewindPending ) .addAction ( R.drawable.ic_play, "Play", playPending ) .addAction ( R.drawable.ic_forward, "Forward", forwardPending ) ; NotificationManager notificationManager=(NotificationManager)getSystemService ( NOTIFICATION_SERVICE ); notification.build ().actions[1]=new Notification.Action (R.drawable.a1,"hhhhhhhh",playPending); notificationManager.notify ( 12,notification.build () ); کدی که برای ویرایش آیکن اکشن دوم نوشتم این است: notification.build ().actions[1]=new Notification.Action (R.drawable.a1,"hhhhhhhh",playPending);
  22. سلام خسته نباشید من می‌خواهم اپلیکیشنی بنویسم که وقتی شارژ گوشی به 90 درصد رسید شارژ شدن تمام شود. با این که گوشی به برق وصل است. می‌شود در این رابطه کمکم کنید؟ ممنون
  23. همانطور که می‌دانید اخیرأ فناوری وب‌اسمبلی (Qt for WebAssembly) معرفی شده است، توسعه‌دهندگان کیوت یک نمایشگر برای اجرای خروجی‌های QML در مرورگر طراحی کرده‌اند که به شما این امکان را می‌دهد تا کد‌های نوشته شده‌ی خود را در محیط مرورگر اجرا کنید. در این بخش می‌توانید آخرین نسخه‌ی مرتبط با Qt Design Viewer را برای آزمایش پیدا کنید، نمایشگر Qt Design Viewer با چند طرح آماده برای آزمایش همراه است. برای اجرای یک برنامه‌ی سفارشی تحت QML، باید یک پرونده‌ی qmlproject. که پرونده‌ی اصلی QML است را تعریف کنید. این همان قالب اساسی پروژه است که توسط Qt Design Studio و Qt Creator برای پروژه‌های QML استفاده می‌شود. پوشه‌ی پروژه باید به صورت یک فایل Zip فشرده شود و سپس در Qt Design Viewer بارگذاری گردد. همچنین می‌توانید از نسخه‌ی Qt Design Studio 1.3 یک فایل منبع را از پروژه ایجاد کرده و بسته‌ای را که به صورت خودکار ایجاد شده است را بارگذاری کنید. آزمایش‌های مربوطه بر روی مرورگر‌های Safari، Chrome، FireFox و Edge انجام شده است و عملکرد اجرای QML در تمامی آن‌ها بسیار خوب است. البته زمان تدوین و پیکربندی به مرورگر شما بستگی دارد، اما عملکرد واقعی برنامه پس از اجرا همانند نسخه‌ی دسکتاپ است. سیستم Qt Design Viewer همراه با اکثر ماژول‌های QML به عنوان بخشی از کیوت است که در نسخه‌ی ۵.۱۴ ساخته شده است. همچنین، این محیط بر روی سیستم‌عامل‌های iOS و Android اجرا می‌شود که یک روش ساده را برای اجرای طرح‌های آزمایشی ارائه می‌کند. این فناوری جدید است، بنابراین در صورت مشاهده‌ی مشکلات آن را به تیم توسعه‌دهنده‌ی آن گزارش دهید.
  24. کامبیز اسدزاده

    کیوت برای وب‌ اسمبلی

    وب‌اسمبلی (WebAssembly) یا wasm یک فناوری برنامه‌نویسی سطح‌پایین برای استفاده در مرورگر است. هدف اولیه‌ی آن پشتیبانی از کامپایل کد‌ها به سی و سی++ است هرچند که قرار است از سایر زبان‌ها نیز حمایت شود. حال کتابخانه‌ی Qt این امکان را تحت ماژول Qt WebAssembly فراهم می‌کند تا برنامه‌‌ی نوشته شده توسط سی++ و کیوت در محیط مرورگر قابل اجرا باشند. این ویژگی در حال حاضر به عنوان پیش‌نمایش برای نسخه‌ی Qt 5.11 برنامه‌ریزی شده است. کیوت برای ساخت وب اسمبلی دستور‌العمل‌هایی را در اینجا آورده است. قبل از هرچیز شما نیاز دارید تا ابزار کامپایلر emsdk را آماده و نصب نمایید. بنابراین دستورات زیر را به ترتیب اجرا کنید. # Get the emsdk repo git clone https://github.com/juj/emsdk.git # Enter that directory cd emsdk # Fetch the latest registry of available tools. ./emsdk update # Download and install the latest SDK tools. ./emsdk install latest # Make the "latest" SDK "active" for the current user. (writes ~/.emscripten file) ./emsdk activate latest # Activate PATH and other environment variables in the current terminal source ./emsdk_env.sh در صورتی که در پیکربندی نیاز به راهنمایی دارید از راهنمای اصلی آن استفاده کنید و یا در همین مرجع در تالار‌های گفتمان از ما بپرسید. ما به این ابزار به عنوان ابزار کامپایل-چند‌منظوره استفاده خواهیم کرد. برخی از اسکرین شات‌ها از نتایج خروجی این ماژول به صورت زیر آمده‌اند: یک بازی ساده به نام Colliding mice ویژگی پنجره‌های گفتگو به نظر می‌رسد پنجره‌های ساخته شده توسط QOpenGLWindow با فریم ریت ۶۰ به خوبی عمل می‌کنند. البته به نظر می‌رسد QOpenGLWidget فعلاً شامل برخی از مشکلات است که حل خواهند شد. کامپایلر Emscripten که به عنوان یک کامپایلر منبع‌باز که بک اند آن بر روی LLVM اجرا می‌شود کُد‌های OpenGL را به WebGL ترجمه می‌کند. بنابراین محدودیت‌هایی در نسخه‌های دسکتاپ و اِمبد‌ها وجود خواهد داشت. نمونه مثال پنجره تحت OpenGL در کنار این‌ها QtBases و QtDeclarative که از شاخه‌ی Wip/Web Assembly استقاده می‌کنند، ماژول‌های شناخته شده‌ی کیوت به صورت زیر به کار گرفته می‌شوند: QtCharts QtGraphicalEffects QtQuickControls QtQuickControls2 QtWebSockets QtMqtt (با استفاده از وب سوکت) برای استفاده از QtMqtt، شما باید کلاس WebSocketIODevice از نمونه مثالی با نام (websocketsubscription) وارد برنامه‌ی خود کنید. نمونه مثال‌های ساعت در QML نکته: از آن‌جا که جاوا‌اسکریپت و وب‌اسمبلی تنها یک نخ (Thread) دارند، QtDeclarative تنها برای یک نَخ (ترد) کار خواهد کرد. در نظر داشته باشید که ماژول‌های QtCharts QtGraphicalEffects، QtQuickcontrols، QtQuickControls2 بدون هیچ تغییراتی کار می‌کنند. ماژول QtChart از نمونه مثال oscilloscope این پروژه به عنوان یک رویکرد جدید و ویژگی‌ای که در آینده می‌تواند مفید باشد در حال توسعه است. بخش ویکی رسمی آن در این لینک آورده شده است.
  25. سلام من سالهاست تجربه کار با ویژوال استودیوC++ رو دارم ولی به تازگی میخوام شروع کنم Qt را یا بگیرم. یه سوال داشتم. اگر add ons مربوط به qt در ویژوال استودیو را نصب کنم و با کتابخانه های qt کار کنم. آیا برنامه کامپایل شده نهایی (دسکتاپی) در هر سیستم عاملی قابل اجراست؟ مثلا در سیستم عامل لینوکس یا اندروید (موبایل) ؟ یا اینکه باید پروژه را به این سیستم عاملها منقل کنم و مجددا تحت این سیستم عاملها کامپایل کنم؟ چطور میتونم با کمترین کار و دردسر، برنامه ای نهایتا داشته باشم که در همه سیستم عاملها قابل اجرا باشد؟ قبلا از توضیحتون متشکرم
×
×
  • جدید...