جستجو در تالارهای گفتگو
در حال نمایش نتایج برای برچسب های 'کیوت'.
55 نتیجه پیدا شد
-
همه چیز در مورد مجوز و شرایط استفاده از کتابخانهٔ 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 بهرهمند شوید. برخی از نکات را نیز باید در نظر بگیرید، مانند نوع کامپایل و نوع مجوزهای قابل پذیرش در فروشگاهها که عموماً همهٔ آنها را توضیح دادیم به چه صورت هستند.-
- qt license
- license
- (و 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 بسیار خسته کننده خواهد بود.
-
ابزار Andrioid SDK , Android NDK, openssl , commandlinetools و غیره رو نصب کردم و در قسمت devices همه تیک ها سبز هست. یک پروژه qtquick برای اندروید ایجاد کردم. موقع کامپایل با خطای (gradle) زیر مواجه میشم : General error during conversion: Unsupported class file major version 63 از JDK ورژنن 17 تا 20 رو هم امتحان کردم بازم فایده نداشت
-
با سلام در خصوص ایجاد یک notification در اندروید متاسفانه توضیحات کاملی موجود نیست مگر مثال خود کیوت که باز هم گنگ هست. اگر از دوستان کسی تجربه ساخت نوتیفیکیشن رو داره راهنمایی بفرماید ممنون میشم.
- 3 پاسخ
-
- نوتیفیکیشن
- کیوت
-
(و 1 مورد دیگر)
برچسب زده شده با :
-
سلام دوستان خسته نباشید. من میخوام به پروژه ام یک فرم جدید اضافه کنم که با کلیک روی یک دکمه باز بشه ولی به محض باز شدن بسته میشه. راهکار عملی برای این مورد چی میتونه باشه؟ ممنون.
-
خسته نباشید. من میخواستم در محیط Qt، محتوای یک فایل اکسل رو بخونم و مفاد فایل و به دیتابیس که بر روی Sql Server هستش منتقل کنم که خواندن فایل اکسل میسر نشد و روش هایی که در اینترنت سرچ کردم کارساز نبودن نیاز به راهنمایی دارم. پیشاپیش از کمکتون متشکرم.
- 1 پاسخ
-
- sql server
- اکسل
-
(و 1 مورد دیگر)
برچسب زده شده با :
-
سلام من برای اینکه یک آرایه از داده ها رو در 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++; } } ممنون
-
سلام برای استفاده از ماژول های private متریال چه کاری باید انجام داد؟ به عنوان مثال : import QtQuick.Controls.Material.impl 2.12 quickcontrols2impl-private را نمی شود وارد کرد و خطای Unknown module می دهد. این فایل qquickiconlabel.pro (لینک) رو هم نگاه کنید. Ripple که در Button متریال استفاده شده را احتیاج دارم.
-
سلام . من مرتضی عبدالرحیمی هستم. یه مشکلی داشتم گفتم با شما درمیان بزارم و اگه تونستید راهنمایی کنید. دو فانکشن نوشتم در کیوتی که یکی برای نمایش و دیگری برای عدم نمایش یک 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(); }
- 1 پاسخ
-
- کیوت
- busy indicator
-
(و 2 مورد دیگر)
برچسب زده شده با :
-
سلام خدمت دوستان و اساتید گرامی. فرض کنین پنجرهای در برناممون داریم که از نوع QWidget هستش و میخوایم مختصات لحظه به لحظه حرکت موس رو بگیریم. خب در این حالت قاعدتا باید تابع QWidget::mouseMoveEvent رو بازنویسی و مطابق با کاری که میخوایم انجام بدیم تعریف کنیم. حالا اگر کاری که میخوایم در داخل تابع QWidget::mouseMoveEvent انجام بدیم زمانبر باشه برای جلوگیری از کند شدن برنامه و ایجاد تاخیر و از دست دادن جزئیات حرکت موس چه اقداماتی باید انجام بدیم؟ یکی راهی که به ذهن خودم رسید استفاده از یک نخ جدا برای انجام پردازش زمانبر هست ولی از اونجایی که لازمه قبل از اتمام تابع QWidget::mouseMoveEvent از join شدن نخ ایجاد شده اطمینان حاصل کنیم باز هم برنامه دچار تاخیر خواهد شد اگر هم بخوایم بلافاصله بعد از اجرای نخ اونو از نخ ایجاد کنندش جدا (detach) بکنیم بازم مشکل همچنان پا برجاست چون تابع QWidget::mouseMoveEvent پشت سر هم فراخوانی میشه و کلی نخ درست میشه که از نخ اصلی جدا شدن و نمیشه مدیریتشون کرد! در یک چنین وضعی چه کاری باید انجام بدیم؟ سپاس گزارم.
-
- mousemoveevent
- qwidget
-
(و 3 مورد دیگر)
برچسب زده شده با :
-
سلام وقت همگی به خیر برنامه ای میخوام بنویسم در qt که تصاویر و فیلم دوربین تحت شبکه را بگیرم و ذخیره کنم مثالهایی که تو سایت گیت هاب بود را امتحان کردم ولی اکثرا به کتابخانه هایی وابسته هستند که زیاد معروف نیستند و اجرای آنها هم اکثرا با خطاهای تو در تو مواجه می شود که عمدتا به خاطر کتابخانه هاشون هست با خود opencv تصویر دوربین را با کارت کپچر گرفتم ولی تحت شبکه را هنوز نتوانستم راه بیندازم مثال و یا کدی ندارید که بتونه بهم کمک کنه؟ ممنون
-
با سلام. از آن جایی که در پنل کافه بازار فقط یک فایل apk که با همه ی معماری های پردازنده سازگار است می توان منتشر کرد با qt 5.12 چطور خروجی باید بگیریم که توسط همه ی پردازنده ها پشتیبانی بشه؟
-
سلام من میخواهم دوباره مقدار و آیکن اکشن دوم را تغییر دهم. اما جواب نمیدهد. چرا؟ 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);
-
سلام خسته نباشید من میخواهم اپلیکیشنی بنویسم که وقتی شارژ گوشی به 90 درصد رسید شارژ شدن تمام شود. با این که گوشی به برق وصل است. میشود در این رابطه کمکم کنید؟ ممنون
-
کامبیز اسدزاده یک موضوع را ارسال کرد در <span class="ipsBadge ipsBadge_pill" style="background-color: #2cdb89; color: #000000;" >کتابخانه کیوت (Qt)</span>
همانطور که میدانید اخیرأ فناوری وباسمبلی (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 اجرا میشود که یک روش ساده را برای اجرای طرحهای آزمایشی ارائه میکند. این فناوری جدید است، بنابراین در صورت مشاهدهی مشکلات آن را به تیم توسعهدهندهی آن گزارش دهید. -
این چشمانداز احتمالاً برای دوستداران کتابخانهٔ قدرتمند 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 و سایر قسمتهایی که توسط بخش بزرگی از کاربران ما مورد استفاده قرار میگیرد، در دسترس باشد. ما در حال برنامهریزی برای افزایش بسیاری از پیشرفتها در کلاسهای اصلی و عملکردی هستیم که در سری کیوت ۵ نتوانستیم انجام دهیم. هدف این است که سازگاری کامل منبع را حفظ کنیم، اما از آنجا که میتوانیم سازگاری باینری را با کیوت ۶ بشکنیم، میتوانیم پاکسازیها و اصطلاحات کاملاً زیادی را انجام دهیم که در کیوت ۵ نمیتوانستیم آن را عملی کنیم. با این وجود، ما باید به جلو پیش برویم و برخی از پاکسازیها که در کیوت ۵ در مورد کلاسها، توابع و یا ماژولها عنوان شده بود را در کیوت ۶ به طور کامل اعمال کنیم. این کار باعث میشود ما روی مبنای کدگذاری شدهٔ فعلی تمرکز بیشتر و بهتری داشته باشیم. با این حال، انتقال به دور از قسمتهای منسوخ شده باید تا حد امکان ساده باشد و کاربران ما میتوانند با استفاده از کیوت ۵.۱۵ «پشتیبانی بلند مدت» به صورت ایدهآل این کار را انجام دهند. هدف ما باید این باشد که کیوت ۶ به اندازهٔ کافی با نسخهٔ ۵.۱۵ سازگار باشد تا فرد بتواند به راحتی یک بخش اعظمی از کد خود را حفظ کند، به طوری که کد آن در هر دو نسخهٔ ۵ و ۶ قابل کامپایل باشد. بازار و ساختار فنی محصول علاوه بر بهبود چهارچوب و ابزارهای کیوت، هدف ما ایجاد بازار جدیدی برای قطعات و ابزارهای توسعه است. این بازار بر روی کاربران مستقیم ما متمرکز خواهد شد که برنامههای کاربردی و دستگاههای تعبیه شده را طراحی و توسعه میدهند؛ به این ترتیب این یک مرکز تجمع اصلی برای اکو سیستم کیوت خواهد بود که این امکان را به شخص ثالث میدهد تا نسخههای اضافی خود را در کیوت منتشر کنند و هم محتوای رایگان و تجاری را که برای آن هزینه پرداخت میکنند. کیوت طی سالهای گذشته رشد بسیار زیادی داشته است، تا جایی که ارائهٔ نسخهٔ جدید آن یک کار مهم است. با استفاده از کیوت ۶ فرصتی برای بازسازی محصولات ارائه شده ما وجود دارد و یک محصول اصلی و کوچکتر که شامل چهارچوبها و ابزارهای اساسی است. ما از بازار استفاده خواهیم کرد تا چهارچوب و ابزارهای اضافی خود را ارائه دهیم، نه به عنوان یک بستهنرمافزاری وابسته به کیوت! چشمانداز فنی تا اولین نسخهٔ کیوت ۶ تکامی خواهد یافت. اگرچه معتقد هستیم که این سند بسیاری از مهمترین نکات را برای نسخهٔ بعدی کیوت معرفی میکند اما مطمئناً کامل نیست. اگر شما هم ایدهٔ دیگری دارید میتوانید آن را با ما در میان بگذارید.
-
سلام من سالهاست تجربه کار با ویژوال استودیوC++ رو دارم ولی به تازگی میخوام شروع کنم Qt را یا بگیرم. یه سوال داشتم. اگر add ons مربوط به qt در ویژوال استودیو را نصب کنم و با کتابخانه های qt کار کنم. آیا برنامه کامپایل شده نهایی (دسکتاپی) در هر سیستم عاملی قابل اجراست؟ مثلا در سیستم عامل لینوکس یا اندروید (موبایل) ؟ یا اینکه باید پروژه را به این سیستم عاملها منقل کنم و مجددا تحت این سیستم عاملها کامپایل کنم؟ چطور میتونم با کمترین کار و دردسر، برنامه ای نهایتا داشته باشم که در همه سیستم عاملها قابل اجرا باشد؟ قبلا از توضیحتون متشکرم
-
با سلام و عرض خسته نباشید. می خواستم بدونم امنیت xmlhttprequest در qt quick بر بستر https چطوره؟ آیا میشه داده ها رو با wireshark یا fiddler با مجوز جعلی رمز گشایی کرد؟ کسی تا حالا امتحان کرده؟ https://docs.telerik.com/fiddler/Configure-Fiddler/Tasks/DecryptHTTPS
- 1 پاسخ
-
- کیوتکوئیک
- کیوت
-
(و 3 مورد دیگر)
برچسب زده شده با :
-
سلام جدیدا نمیدونم چی شد که موقع انتخاب خروجی دسکتاپ در اوبونتو با چنین اروری مواجه شدم! در گوگل هم نتیجه ای پیدا نکردم و بعضی هاش هم با اون روش حل نشد 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.
-
با سلام، همانطور که میدانید، مستندات کتابخانهی کیوت در بخش Help محیطِ Qt Creator یکی از بهترین و در دسترسترین مستنداتی است که در اختیار توسعهدهندگان قرار گرفته است تا بتوانند هر زمان که نیاز باشد در حالت آفلاین به بانک عظیمی از مستندات و راهنماییهای آن دسترسی داشته باشند. حال با توجه به مزایای این بخش در کیوت کریتور، روشی را پیشنهاد میکنیم که به شما اجازه میدهد مستندات STL زبان را به این بخش اضافه کنید تا دیگر نیازی نباشد به مرجع آنلاین آن مراجعه کنید. برای این کار کافی است مستندات مرجع استاندارد ۱۷ را از این لینک دریافت کنید. معمولاً آخرین نسخه و همچنین نسخههای پیشین مستندات آفلاین مرجع سیپلاسپلاس در این بخش برای همگان ارائه میشود. فایل qch را استخراج کرده و به مسیر Preferences و گزینهی Help به زبانهی Documentation بروید و با زدن دکمهی Add فایل qch را انتخاب و به مستندات اضافه کنید. از این پس میتوانید به آرشیو جامع مستندات مرجع cppreference.com در محیط کیوت کریتور دسترسی داشته باشید. ?
-
- stl
- کیوتکریتور
-
(و 5 مورد دیگر)
برچسب زده شده با :
-
سلام وقت بخیر، بنده قصد داشتم در موزیک پلیری که نوشتم به صورت کامند لاین ( با کمک کتابخانههای Qt و در پروژههای Qt Console Application ) زمانی که بر روی صفحهکلید عمل Space را انجام میدم موزیک Stop بشود و در زمانی که دوباره این عمل و انجام میدم موزیک Resume بشه و به کار خودش ادامه بده در صورت امکان لطفا مثالی بزنید با سپاس فراوان سپاسگذارم
-
سلام من خواستم کیت اندروید نصب کنم اس دی کا و ان دی کا و جاوا 10 هم نصب کردم اما اررور زیرو دارم کسی میدونه مشکلش چیه؟ ممنون از کمکتون عکس اررور
-
با سلام و عرض ادب. من یک rest api دارم که پس از لاگین به من یک access token ارسال می کنه که من می تونم برای درخواست های بعدی از اون استفاده کنم. حالا می خوام بدونم کلاینت خودم (تحت Qml xmlhttprequest) رو چطور پیاده سازی کنم که پس از اولین ورود توسط یوزر و پسوردی که از کاربر گرفتم برای دفعات بعدی نیاز به گرفتن یوزر و پسورد نباشه. مانند اپلیکیشن های تاکسی آنلاین و... که یک بار فقط مشخصات رو از کاربر می پرسند. اگر بخوام یوزر و پسورد یا access token رو در اپلیکیشن ذخیره کنم احتمال decompile یا چیزی شبیه به این هست که موجب افشا شدن این اطلاعات میشه. (آیا Qml Settings امنیت این کار رو تامین می کنه؟) لطفا راه کار رو بفرمایید. تشکر
- 4 پاسخ
-
- توکن
- access tooken
- (و 6 مورد دیگر)
-
سلام، در qml جدولی دارم که با ارث بری از listView ایجاد شده و علاوه بر اطلاعات اعداد حاوی اطلاعات تصویر هم هست. برای گزارشگیری از این جدول به صورت pdf باید تصاویر و نوشتههایی به عنوان سربرگ اضافه کنم. برای الصاق تصاویر و گزارشگیری از این جدول به صورت pdf چه راهی در qml پیشنهاد میکنید؟
-
سلام به همه دوستان گرامی. من در آموزش های Qt دیدم که وقتی مدرس، فایل .pro پروژه رو تغییر میده، QMake به شکل خودکار اجرا میشه تا متناسب با تغییرات انجام شده Makefile جدید رو به روزرسانی کنه. اما من در Qt هر بار که فایل .pro رو تغییر میدم نیازه تا دوباره به شکل دستی روی نام پروژه راست کلیک و سپس run qmake رو انتخاب کنم. این آموزش ها البته قدیمین ولی من در نسخه های جدید Qt Creator چیزی مبنی بر اجرای خودکار QMake پیدا نکردم. حالا چه طوری میشه QMake به شکل خودکار پس از هر بار تغییر فایل .pro به اجرا شه؟ سپاس گزارم.