جستجو در تالارهای گفتگو
در حال نمایش نتایج برای برچسب های 'qt5'.
7 نتیجه پیدا شد
-
سلام و عرض ادب میخواستم جهت QMenubar راست چین بشه که این مورد به سادگی امکان پذیره ولی QAction هایی که اضافه میکنم عنوان راست چین نمیشه و راه حلی هم پیدا نکردم کسی راه حلی داره؟ ممنون میشم اگه راهنمایی کنید. با سپاس
-
سلام جدیدا نمیدونم چی شد که موقع انتخاب خروجی دسکتاپ در اوبونتو با چنین اروری مواجه شدم! در گوگل هم نتیجه ای پیدا نکردم و بعضی هاش هم با اون روش حل نشد 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.
-
این چشمانداز احتمالاً برای دوستداران کتابخانهٔ قدرتمند 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 و سایر قسمتهایی که توسط بخش بزرگی از کاربران ما مورد استفاده قرار میگیرد، در دسترس باشد. ما در حال برنامهریزی برای افزایش بسیاری از پیشرفتها در کلاسهای اصلی و عملکردی هستیم که در سری کیوت ۵ نتوانستیم انجام دهیم. هدف این است که سازگاری کامل منبع را حفظ کنیم، اما از آنجا که میتوانیم سازگاری باینری را با کیوت ۶ بشکنیم، میتوانیم پاکسازیها و اصطلاحات کاملاً زیادی را انجام دهیم که در کیوت ۵ نمیتوانستیم آن را عملی کنیم. با این وجود، ما باید به جلو پیش برویم و برخی از پاکسازیها که در کیوت ۵ در مورد کلاسها، توابع و یا ماژولها عنوان شده بود را در کیوت ۶ به طور کامل اعمال کنیم. این کار باعث میشود ما روی مبنای کدگذاری شدهٔ فعلی تمرکز بیشتر و بهتری داشته باشیم. با این حال، انتقال به دور از قسمتهای منسوخ شده باید تا حد امکان ساده باشد و کاربران ما میتوانند با استفاده از کیوت ۵.۱۵ «پشتیبانی بلند مدت» به صورت ایدهآل این کار را انجام دهند. هدف ما باید این باشد که کیوت ۶ به اندازهٔ کافی با نسخهٔ ۵.۱۵ سازگار باشد تا فرد بتواند به راحتی یک بخش اعظمی از کد خود را حفظ کند، به طوری که کد آن در هر دو نسخهٔ ۵ و ۶ قابل کامپایل باشد. بازار و ساختار فنی محصول علاوه بر بهبود چهارچوب و ابزارهای کیوت، هدف ما ایجاد بازار جدیدی برای قطعات و ابزارهای توسعه است. این بازار بر روی کاربران مستقیم ما متمرکز خواهد شد که برنامههای کاربردی و دستگاههای تعبیه شده را طراحی و توسعه میدهند؛ به این ترتیب این یک مرکز تجمع اصلی برای اکو سیستم کیوت خواهد بود که این امکان را به شخص ثالث میدهد تا نسخههای اضافی خود را در کیوت منتشر کنند و هم محتوای رایگان و تجاری را که برای آن هزینه پرداخت میکنند. کیوت طی سالهای گذشته رشد بسیار زیادی داشته است، تا جایی که ارائهٔ نسخهٔ جدید آن یک کار مهم است. با استفاده از کیوت ۶ فرصتی برای بازسازی محصولات ارائه شده ما وجود دارد و یک محصول اصلی و کوچکتر که شامل چهارچوبها و ابزارهای اساسی است. ما از بازار استفاده خواهیم کرد تا چهارچوب و ابزارهای اضافی خود را ارائه دهیم، نه به عنوان یک بستهنرمافزاری وابسته به کیوت! چشمانداز فنی تا اولین نسخهٔ کیوت ۶ تکامی خواهد یافت. اگرچه معتقد هستیم که این سند بسیاری از مهمترین نکات را برای نسخهٔ بعدی کیوت معرفی میکند اما مطمئناً کامل نیست. اگر شما هم ایدهٔ دیگری دارید میتوانید آن را با ما در میان بگذارید.
-
کامبیز اسدزاده یک موضوع را ارسال کرد در <span class="ipsBadge ipsBadge_pill" style="background-color: #2cdb89; color: #000000;" >کتابخانه کیوت (Qt)</span>
این تاپیک جهت معرفی و اطلاع رسانی در رابطه با اهداف نسخههای جدید، بهروزرسانیها، تاریخ انتشار و موارد مرتبط با آن ایجاد شده است. در این تاپیک به موضوعات مرتبط خواهیم پرداخت. جهت شروع نسخهٔ ۵.۱۲.۰ کیوت با پشتیبانی 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 -
سلام دوستان. بعد از خروجی برنامه ام روی گوشیم در قسمت Appilication output یک پیامی هر چند ثانیه یک بار ظاهر میشد.کنجکاو شدم بدونم دلیلش چیه!و ایا اهمیت داره یا نه؟ QT5.13 کتابخانه ها : quick sql androidextras core gui charts bluetooth D/TelephonyIcons( 1857): data type item id: 2131230725 roaming item id:2131230728
-
سلام روز بخیر من میخوام توی اپلیکیشنم مثلا گالری رو باز کنم و باید اولش permission بگیرم. وقتی برای بار اول اینکارو می کنم و صفحه ی اجازه گرفتن بالا میاد و من میزنم اجازه دارد برنامه crash می کنه ولی اگه خارج شم و دوباره وارد شم گالری رو باز می کنه.جالب اینه که حالا اگر من مدل permission دیگه مثلا برای تماس تلفنی رو حالا بزنم بدون مشکل انجام میشه حتی برای اولین بار میخواستم ببینم کسی میدونه مشکل کجاست؟ ورژنsdk :24.4.1 اندروید گوشی 6 برایgalaxygrandprime+ target api:api28 android 9 توی android manifest هم اضافه کردم permission هارو
- 1 پاسخ
-
- کیوت کریتور
- اپلیکیشن
-
(و 4 مورد دیگر)
برچسب زده شده با :
-
با سلام. در حال یادگیرQt و Thread ها بودم که به مشکل دسترسی به متغیر در Thread بر خوردم. کلاس زیر از QThread مشتق شده است : #ifndef MYTHREAD_H #define MYTHREAD_H #include <QObject> #include <QWidget> #include <QThread> #include <QMutex> class MyThread : public QThread { Q_OBJECT public: explicit MyThread(QObject *parent = nullptr); void run() override; bool Stop; signals: void NumberChanged(int); }; #endif // MYTHREAD_H #include "mythread.h" MyThread::MyThread(QObject *parent) : QThread (parent) { } void MyThread::run() { for(int i=0; i<100000000 ; ++i){ QMutex mutex; mutex.lock(); if (this->Stop) break; mutex.unlock(); emit NumberChanged(i); this->msleep(100); } } داخل فرم خودم دو QPushBotton و یک QLabel دارم. که یکی از دکمهها (QPushButton) وظیفه اجرای یک QThread را دارد و یکی دیگه باعث متوقف کردن کار QThread ایجاد شده : #include "dialog.h" #include "ui_dialog.h" Dialog::Dialog(QWidget *parent) : QDialog(parent), ui(new Ui::Dialog){ ui->setupUi(this); mThread = new MyThread(this); connect(mThread,SIGNAL(NumberChanged(int)),this,SLOT(onNumberChanged (int))); } Dialog::~Dialog(){ delete ui; } void Dialog::onNumberChanged(int Number){ ui->label->setText(QString::number(Number)); } void Dialog::on_pushButton_clicked(){ mThread->start(); } void Dialog::on_pushButton_2_clicked(){ mThread->Stop = false; } در کد بالا زمانیکه on_pushButton_clicked فراخوانی شد. QThread را اجرا میکند. و در مقابل زمانیکه on_pushButton_2_clicked فراخوانی شد. متغیر bool MyThread::Stop را برابر مقدار false میگذارد که باعث از بین رفتن عملیات QThread ایجاد شده میشود. اما در اصل هیچ تفاوتی ایجاد نمیکند ؟ و زمان بستن برنامه با خطای لاگ زیر برخورد میکنم : 21:39:20: Starting /tmp/untitled/build-untitled-Desktop_Clang_7_0_0-Debug/untitled... QThread: Destroyed while thread is still running 21:39:32: The program has unexpectedly finished. 21:39:32: The process was ended forcefully. 21:39:32: /tmp/untitled/build-untitled-Desktop_Clang_7_0_0-Debug/untitled crashed. کجای کار اشتباه شده است ؟