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

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

بنیـــان گذار
  • تعداد ارسال ها

    505
  • تاریخ عضویت

  • روز های برد

    266

پست ها ارسال شده توسط کامبیز اسدزاده


  1. در 1 دقیقه قبل، kamran_14 گفته است :

    چون میخواستم تفاوتشون رو عملی ببینم. ولی قبلا گفته شده بود استاندارد get,post در همه ی زبانهان یکسانه ولی در html میشد به سرور اطلاعات فرم رو فرستاد. خودش در آدرس بار نشون میداد و ما  کویری استرینقها رو ما نمینویشتیم

    همینطوره خب، منم اشاره کردم مثالش رو که تحت Get باید پارامتر‌ها رو در Url بیاری.

    توی اندروید و مثالی که زدی تابع getParams اضافه هست و صرفاً در روش Post به درد می‌خوره.

    با توجه به مثال خودت همچین کاری کافی هست :

    String Url="http://192.168.43.3/shop/register.php?username=name&email=mymail";

     

    • پسندیدن 1

  2. در ۱ ساعت قبل، kamran_14 گفته است :

    ممنون از جوابتون

    ولی من میخواستم بدونم با متد GET چطوری میشه اطلاعاتو ارسال کرد؟ یعنی میتوان همین برنامه رو طوری تغییر داد که به جای post ما از get استفاده کرد؟

    چرا گیر دادی به متد Get؟ در این متد زمانی می‌تونید پارامتری رو ارسال کنید که در قالب url باشه.

    برای مثال به این شکل:

    http://www.domain.com/request.php?username=myname&email=myemail

    در این صورت دیگه نمی‌تونید کوئری‌های سفارشیِ خارج از url ارسال کنید.

    • پسندیدن 1

  3. در در 9 مهر 1398 در 09:33، kamran_14 گفته است :

    سلام خسته نباشید

    این متد برای ثبت اطلاعات در سرور هست. مشکلی در این کد نیست. فقط چرا نمیشه با متد GET اطلاعات رو فرستاد؟ مگه متد GET برای ارسال اطلاعات نیست؟ من GET وقتی مینویسم عمل نمیکنه

    
     private void sendInfo(final String email, final String username, final String password, final String mobile)
        {
            String Url="http://192.168.43.3/shop/register.php";
            StringRequest stringRequest=new StringRequest ( Request.Method.POST, Url, new Response.Listener<String> () {
                @Override
                public void onResponse(String response) {
                    Log.i ( TAG, "onResponse: " );
    
                    try {
                        JSONObject jsonObject=new JSONObject ( response );
                        String resualt=jsonObject.getString ( "response" );
                        if (resualt.matches ( "ok" ))
                            Toast.makeText ( getContext (), "Successfully is Registred", Toast.LENGTH_SHORT ).show ();
                        else
                            Toast.makeText ( getContext (),"Faild",Toast.LENGTH_LONG ).show ();
                    } catch (JSONException e) {
                        e.printStackTrace ();
                    }
                }
            }, new Response.ErrorListener () {
                @Override
                public void onErrorResponse(VolleyError error) {
                    Toast.makeText ( getContext (), error+"", Toast.LENGTH_SHORT ).show ();
                }
            } ){
                @Override
                protected Map<String, String> getParams() throws AuthFailureError {
                    Map<String,String> params=new HashMap<> (  );
                    params.put ( "email",email );
                    params.put ( "username",username );
                    params.put ( "password",password );
                    params.put ( "mobile",mobile );
                    return params;
                }
            };
            stringRequest.setRetryPolicy (new DefaultRetryPolicy (10000,DefaultRetryPolicy.DEFAULT_MAX_RETRIES,DefaultRetryPolicy.DEFAULT_BACKOFF_MULT) );
            Volley.newRequestQueue ( getContext () ).add ( stringRequest );
        }

     

    سلام،

    متد Get معمولاً روشی برای درخواست اطلاعات هست نه ارسال! هرچند برای ارسال هم استفاده می‌شه اما اگر شما می‌خواهید اطلاعاتی مثل همین کدی که می‌بینم رو در قالب کوئری نه url ارسال کنید بهتره متد رو به Post تغییر بدین.

    خیلی ساده بخوام توضیح بدم هرجا که قرار بود مقادیری رو به عنوان کوئری به سمت سرور ارسال کنید حتماً از Post استفاده کنید. در این صورت لازم نیست پارامتر‌ها رو در قالب url ارسال کنید.

    مثالی هم که زدین متد Post هست، اگر دقت کنید نوع params داره چند تا نوع با مقدار رو ارسال می‌کنه.

    سمت سرور هم مثلاً با Php با در نظر گرفتن نوع درخواست از Post به این شکل می‌تونید مقدار رو بگیرید.

    $email = $_POST["email"];
    $username = $_POST["username"];
    $password = $_POST["password"];
    $mobile = $_POST["mobile"];
    
    echo $email;
    ...
    .....
    ......

     

    • پسندیدن 1

  4. در 9 دقیقه قبل، kamran_14 گفته است :

    سلام
    ببخشید سوالی داشتم.
    متد post  و get که در  html خواندیم با متد get و post اندروید فرق میکنه؟
    متد get و post در html هر دو برای ارسال اطلاعات بود. 
    فقط اگر با get ارسال میکردیم امنیت پایین بود به خاطر نمایش اطلاعات در آدرس بار مرورگر ولی سرعت ارسال اطلاعات با get زیاده
    و اگر با post ارسال کنیم امنیت بالاست چون در آدرس بار اطلاعات رو نشون نمیداد.

    در اندروید فرق میکنه؟ یعنی آیا برای ارسال اطلاعات میتوان از دو متد استفاده کرد؟

    سلام،
    این روش‌ها که بهشون اشاره کردین به عنوان متد (method) انتقال اطلاعات بین سرور و کلاینت هستند. برای دریافت و یا اعمالِ یک درخواست برای انجام کار مانند انتقال، به‌روز‌رسانی، دریافت، حذف و غیره از متد‌هایی مثل GET, POST, DELETE, PUT, PATCH استفاده می‌شود که متد‌های Get و Post دو نمونهٔ مهم و پرکاربردی از این روش‌ها محسوب می‌شوند.

    در اندروید شما برای اینکه بخواهید اطلاعاتی را از سرور خود دریافت و یا انتقال دهید، اگر اون پروتکل تحت http یا https باشه می‌توانید تحت این متد‌ها تراکنش را انجام دهید. بنابراین هیچ فرقی بین متد‌های GET و POST در اندروید و HTML وجود نداره چون این‌ها یک سری متد‌های استانداردِ از قبل تعریف شده برای پروتکل‌ HTTP بشمار می‌آیند.

    • پسندیدن 1

  5. معمولاً در سی‌پلاس‌پلاس برای چاپ اطلاعات مربوط به کد منبع از ماکرو‌ها استفاده می‌شود. ماکروها به عنوان یکی از ویژگی‌های بسیار قدرتمند زبان C محسوب می‌شوند که در C++ نیز از آن‌ها پشتیبانی می‌شود. برای مثال ماکرو‌های __LINE__ و __FILE__ اطلاعات مربوط به شماره خط، فایل و نام آن را بر می‌گردانند.

    در استاندارد جدید یعنی 2a یا همان نسخهٔ ۲۰ زبان، کلاس source_location معرفی شده است که در فایل سرآیند <source_location> تعبیه شده است. با دسترسی به فیلد‌های line، column، filename و function_name می‌توان تحت این کلاس مشخصات مورد نیاز را از کد منبع چاپ کرد.

    مثال :

    #include <iostream>
    #include <string_view>
    #include <source_location>
     
    void log(std::string_view message,
             const std::source_location& location = std::source_location::current())
    {
        std::cout << "info:"
                  << location.file_name() << ":"
                  << location.line() << " "
                  << message << '\n';
    }
     
    int main()
    {
        log("Hello world!");
    }

    خروجی کد مربوطه به صورت زیر است.

    info:main.cpp:15 Hello world!

    منبع در مرجع سی‌پلاس‌پلاس

    • پسندیدن 1
    • تشکر شده 1

  6. در 21 ساعت قبل، amirb گفته است :

    با سلام و عرض خسته نباشید.

    می خواستم بپرسم شیوه ی تعیین میزان سهم هر یک از اعضاء تیم یک استارت آپ از درآمد چگونه هست؟ مثلا اگر قرار است درصدی باشد چگونه تعیین می شود که به گرافیست چقدر داده شود و به برنامه نویس ها چقدر؟

    فرض این است که تیم متشکل از اعضای زیر است:

    1. برنامه نویس بک اند
    2. برنامه نویس فرانت اند
    3. گرافیست
    4. برنامه ریز و آنالیزور و مدیر تبلیغات پروژه

    سلام،
    معمولاً یکی از بزرگترین مشکلات استارتاپ‌ها همین سهام‌بندی و عدم رضایت بین اعضای گروه هست. بنابراین من یک توضیح خلاصه و مقدماتی میدم شاید کمک کند.

    برای اینکه این مشکل حل بشه باید توجه کرد بنیان‌گذاران باید مسئولیت مشخصی داشته باشند. میزان تاثیر و اهمیت تخصص و وجود یک فرد در گروه جهت به بلوغ رساندن پروژه بسیار مهم است.

    اینکه چه کسی ارزش بیشتری خلق می‌کند مهم است. البته نوع استارتاپ هم بسیار موثر است، برای مثال استارتاپی که اساس آن نرم‌افزار است مسلماً تخصص یک مهندس نرم‌افزار بسیار اهمیت دارد.

    در نهایت موارد زیر برای هر یک می‌تواند مورد توجه قرار گیرد:

    • میزان نقش آفرینی
    • قدرت رسانه‌ای
    • قدرت تخصصی و توسعه
    • تجربه و نفوز
    • میزان مسئولیت پذیری
    • نوع فعالیت
    • تجربهٔ قبلی از استارتاپ‌ها
    • اعتبار ارائه شده مالی و یا تخصصی
    • دانش و میزان تحصیلات
    • و ...

    میزان درصد هم بهتر است بر اساس توافق بر اساس سود به دست آمده نیز باید با توجه به میزان ارزش‌گذاری هر یک از افراد صورت بگیرد.

    برای مثال با توجه به تعریف شما، تاثیرِ توسعه‌دهندگان فرانت‌اند و بک‌اند (به خصوص بک‌اند) در به وجود آمدن یک نرم‌افزار بیشتر از گرافیست و برنامه‌ریز است. بنابراین ترتیب تاثیر و ارزش‌گذاری لیست شما با توجه به نوع محصول شما درست است. چرا که ابتدا باید محصول به لطف و دانش برنامه‌نویس توسعه و سپس طراحی رابط‌کاربری ایجاد شود تا در نهایت به مراحل گرافیکی (تجربه‌کاربری، بصری، رابط‌کاربری نهایی) و سپس به مرحلهٔ معرفی و تبلیغات برسد.


  7. در 52 دقیقه قبل، Mehdios گفته است :

    جناب اسدزاده ممنون از راهنماییتون

    بسیار مفید بود

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

     

    لینکی که دادم پاسخ مرتبط با همون سوأل بود.

    این مقالات رو مطالعه کنید:

     

    • پسندیدن 1

  8. در 9 ساعت قبل، Mehdios گفته است :

    میخواستم بدونم کامپوننت ها ، sdk چی هستند و در کجا بکار میرند؟

    کامپوننت یا جزء (بخشی) از یک نرم‌افزار یا پروژه هستند. پروژهٔ شما می‌تونه از بخش‌ها و اجزای اصلی و فرعی بسیاری تشکیل شود که هر کدام وظیفهٔ خود را خواهند داشت. برای مثال در یک پروژه تحت سی‌پلاس‌پلاس یک کنترل به عنوان یک جزء یا همان کامپوننت تعریف می‌شود.

    در رابطه با SDK مخفف (Software Development Kit) به معنای کیت توسعهٔ نرم‌افزار است.

    کیت توسعهٔ نرم‌افزار به مجموعه توابع و کتابخانه‌های کامپایل شده‌ای که تولیدکنندگان نرم‌افزار برای آسان کردن برنامه‌نویسی برای محیط یا سکوی خاصی فراهم می‌کنند و در اختیار برنامه‌نویسان کاربردی قرار می‌دهند گفته می‌شود. به عنوان مثال جهت توسعهٔ محصولات ویندوز و دسترسی به سرویس‌های آن شما باید از کیت ویندوز استفاده کنید.

    در 9 ساعت قبل، Mehdios گفته است :

    و اینکه تفاوت بین فریمورک و sdk چیه؟

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

    برای مثال OpenSSL یک کتابخانهٔ رمزنگاری است.

    یا Qt به عنوان یک کتابخانه و فریمورک گرافیکی جهت تولید و توسعهٔ رابط‌های کاربری مورد استفاده قرار می‌گیرد.

    در 9 ساعت قبل، Mehdios گفته است :

    و درC++ چقدر کاربرد دارند؟

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

    لطفا کاملا توضیح بدید.??

    نه تنها در سی++ بلکه در زبان‌های دیگر هم این موارد کاربرد دارند.

     

    • تشکر شده 1

  9. سلام و درود بر اعضای محترم،
    نسخهٔ جدید ۰.۶.۷۸۳ با به‌روز رسانی‌ها، بهود‌ها و ویژگی‌های پایه برای ویندوز ۳۲ و ۶۴ بیتی منتشر شد.

    برای دریافت و مشاهدهٔ جزئیات کلیک کنید.

    image.png

    مشکلات و مواردی که حل شده‌اند به صورت زیر است:

    بهبود‌ها

    • حل شدن مشکل کرش و هنگ کردن نرم‌افزار در سیستم‌هایی که فاقد کارت گرافیکی یا درایور‌های نصب شده هستند (مشکل گزارش شده در نسخهٔ Fanoox Standard)
    • حل شدن مشکل کرش برنامه بعد از بازدید‌های پشت سر هم از پکیج‌های آموزشی به صورت تصادفی
    • ادغام نسخه‌های Software و OpenGLEs بر روی نسخهٔ استاندارد بر پایهٔ سِل
    • حل شدن مشکل پذیرش شماره تلفن معتبر
    • حل شدن مشکل ارتفاع کم در بخش اسکرول دربارهٔ ما و گزینه‌های سوألات متداول
    • حل شدن عدم سوئیچ به صورت خودکار در بخش تأیید شماره وارد شده
    • حل شدن نمایش نوتیفیکیشن بعد از هر بار به‌روز‌رسانی پروفایل
    • حل شدن عدم بازیابی و تغییر رمزعبور
    • حل شدن عدم اعمال محدودیت در اسلایدر امتیاز
    • حل شدن عدم بررسی آدرس پست الکترونیکی و شمارهٔ موبایل در بخش پروفایل و زمان ثبت‌نام
    • حل شدن ارسال مقدار شمارهٔ موبایل نامعتبر
    • حل شدن عدم هماهنگی استایل دکمه‌های خروج پروفایل
    • حل شدن عدم پذیرش کلید Enter در تأیید ایمیل و شمارهٔ همراه
    • حل شدن عدم هماهنگی چیدمان در متن‌های سوألات متداول
    • حل شدن ارسال مقادیر عدد در عنوان‌ نظرات
    • حل شدن عدم غیرفعال شدن دکمهٔ ارسال نظر بعد از ارسال و تأیید 

    ویژگی‌های جدید

    • بازنویسی و جایگزینی کلاس شبکهٔ پیشفرض
    • جایگزینی و حذف ماژول Qt Multimedia با FFmpeg
      • - این تغییرات در نتیجه منجر به پشتیبانی از دِکدر سخت‌افزاری برای DXVA2, VAAPI, VDA, CedarX, CUDA می‌باشد. بنابراین نیازی نیست افزونه‌ای مانند K-Lite Codec به عنوان دکدر ویدیو‌ها بر روی سیستم شما نصب باشد
      • - پشتیبانی از فرمت‌های Hi10P اعمال شد
      • - افزوده شدن ویژگی Real time preview در هستهٔ پلیر (در نسخه‌های بعدی فعال خواهد بود)
      • - ویژگی فیلتر‌ برای OSD
      • - امکان فیلتر سازی بر اساس libavfilter و مانند stero3d و blur
      • - امکان پشتیبانی از ویژگی زیر‌نویس در قالب srt و ass بر اساس موتور libass
      • - نمایش و رندر ویدیو به صورت فریم به فریم یا FBF
      • - استریم بر پایه منابع فایل محلی، rtsp، https و ... و حتی پشتیبانی از استریمر سفارشی
      • - پشتیبانی از چند خروجی برای هر کاربر
      • - پشتیبانی و اعمال وضعیت بر اساس OpenGL و Software برای اعمال brightness, contrast, saturation, hue
      • - پشتیبانی از پروتکل‌ mbedTLS با پشتیبانی TLS
      • - پشتیبانی از فیلترینگ بیت‌استریم برای ویرایش فراداده‌ها در جریان‌های H.264, HEVC و MPEG-2
    • افزوده شدن سیستم به‌روزرسانی هوشمند جهت تشخیص نوع پلتفرم برای نسخهٔ سازگار
    • جایگزینی تمامی ویژگی‌های پیشفرض پخش کننده با انجین جدید
    • افزوده شدن پوسته‌های تاریک و روشن
    • افزوده شدن نوار جستجوی اصلی
    • افزوده شدن فیلتر‌های مرتب سازی در جستجو
    • افزوده شدن نوار پنجرهٔ اختصاصی
    • افزوده شدن امکان ساخت رمزعبور اختصاصی در بخش فراموشی رمز
    • اافزوده شدن امکان ارسال رمزعبور جدید به شماره تلفن همراه جهت تأیید
    • افزوده شدن ویژگی تمام صفحه و تنظیم حداکثری اندازه
    • افزوده شدن امکان افزودن تصویر نمایه
    • افزوده شدن نوار پنجرهٔ اختصاصی
    • افزوده شدن دکمهٔ پسندیدن

    و دیگر تغییرات جزئی ?


  10. در 3 ساعت قبل، قاسم رمضانی منش گفته است :

    درود بر دوستان عزیز؛

    چگونه می‌توان Itemهایی که در ScrollView قرار دارند را وسط‌چین کرد ؟:

    
    ApplicationWindow {
        visible: true
        width: 640
        height: 480
        title: qsTr("Hello World")
        color: "gray"
        ScrollView{
            width: parent.width / 2; height: parent.height / 2
            clip: true
            anchors.centerIn: parent
            Column{
                Repeater{
                    model: 40
                    Rectangle{color: "red"; border.color: "yellow"; width: 80; height: 80}
                }
            }
        }
    }

    در نمونهٔ بالا مثلاً می‌خواهم که تمامی Rectangleها در وسط ScrollView رندر بشوند.

    این کنترل استانداردش همین هست، در واقع مشکل وجود نداره. دلیلش هم اینه که اشیاء رو باید در عرض و طول مشخصی از لیست قرار بدین.

    برای مثال مشخصهٔ width بهتره برابر با مشخصهٔ width والدش باشه.

    • تشکر شده 1

  11. در 47 دقیقه قبل، قاسم رمضانی منش گفته است :

    درود بر دوستان عزیز؛

    کامپوننت TextInput به‌صورت پیش‌فرض وقتی اشاره‌گر ماوس را روی آن می‌بریم هیچ تغییر شکلی بر روی اشاره‌گر ماوس اعمال نمی‌شود، برای حل این مشکل بنده به این‌صورت عمل کرده‌ام :

    
    TextInput{
        .
        .
        MouseArea{
            anchors.fill: parent
            cursorShape: Qt.IBeamCursor
        }
        .
    }

    امّا مشکلی که وجود دارد این MouseArea یک لایه بر روی TextInput‌ ایجاد می‌کند که مثلاً اگر قابلیّت selectByMouse را در TextInput فعال کرده‌باشیم دیگر کارنخواهد کرد.

    چه راه‌حلی برای این مشکل وجود دارد ؟

    به این روش عمل کنید:

        TextInput{
            id: textInput
            width: 100
            height: 30
            text: "Hello, World!"
            selectByMouse: true
            
            MouseArea{
                id: mouseArea
                enabled: textInput.focus ? false : true
                anchors.fill: parent
                cursorShape: Qt.IBeamCursor
                onClicked: textInput.forceActiveFocus()
            }
        }

     


  12. در 7 دقیقه قبل، قاسم رمضانی منش گفته است :

    درود و خسته‌نباشید به دوستان؛

    در مستندات RadioButtonStyle مثالی به این‌صورت زده شده :

    
    RadioButton {
        text: "Radio Button"
        style: RadioButtonStyle {
            indicator: Rectangle {
                    implicitWidth: 16
                    implicitHeight: 16
     				...
            }
            ...
        }
        ...
    }

    امّا RadioButton خاصیّتی تحت عنوان style ندارد، آیا این مثال اشتباه است ؟ و چگونه می‌توان از RadioButtonStyle استفاده کرد ؟

    این مورد دربارهٔ CheckBoxStyle نیز صدق می‌کند.

    درود،

    مثال درسته، اما مرتبط با نسخهٔ ۲.۰ از Qt Controls نیست، مرتبط به نسخه قدیمی ۱.۰ هستش که به صورت زیر بهش دسترسی خواهید داشت. در نسخه‌های جدید روش توسعه پوسته متفاوت و البته بسیار راحت‌تر هست که در ادامه مثال زدم.

    import QtQuick.Controls.Styles 1.4

    البته توصیه می‌کنم از نسخه جدید استفاده کنید.

    مثال :

    import QtQuick 2.12
    import QtQuick.Controls 2.12
    
    RadioButton {
        id: control
        text: qsTr("RadioButton")
        checked: true
    
        indicator: Rectangle {
            implicitWidth: 26
            implicitHeight: 26
            x: control.leftPadding
            y: parent.height / 2 - height / 2
            radius: 13
            border.color: control.down ? "#17a81a" : "#21be2b"
    
            Rectangle {
                width: 14
                height: 14
                x: 6
                y: 6
                radius: 7
                color: control.down ? "#17a81a" : "#21be2b"
                visible: control.checked
            }
        }
    
        contentItem: Text {
            text: control.text
            font: control.font
            opacity: enabled ? 1.0 : 0.3
            color: control.down ? "#17a81a" : "#21be2b"
            verticalAlignment: Text.AlignVCenter
            leftPadding: control.indicator.width + control.spacing
        }
    }

    این هم مستند نحوهٔ گسترش پوسته در کیوت کوئیک کنترل ۲.۰

    • تشکر شده 1

  13. در 19 دقیقه قبل، قاسم رمضانی منش گفته است :

    درود و خسته‌نباشید به دوستان؛

    درحال طراحی یک رابط‌کابری‌ساده بوده‌ام که خواستم قسمت رنگ‌آمیزی Itemها و Fontها و ... به راحتی قابل تغییر و برنامه‌ریزی باشد. اینکار را با استفاده از یک فایل QML جدا به اسم Style.qml به شکل زیر انجام دادم :

    
    pragma Singleton
    import QtQuick 2.13
    
    Item {
        property int   textinputTextSize : 22
    
        property color transparent    : "transparent"
        property color bluredColor    : "#5AAFAAAA"
    
        property int   tabBarWidth    : 50
        property int   tabBarHeight   : 75
        property int   tabBarIconSize : 44
        property int   tabBarTextSize : 20
        property color tabBarIconColor: "#81D8DE"
        property color tabBarTextColor: "#059EAB"
        property color tabBarBackColor: "#0571AB"
    
        property alias sahelRegular : sahel_font.name
        property alias fontAwesome  : font_awesome.name
    
        FontLoader{
            id: sahel_font
            source: "qrc:/assets/fonts/sahel/Sahel-FD-WOL.ttf"
        }
        FontLoader{
            id: font_awesome
            source: "qrc:/assets/fonts/awesome/fontawesome-regular.ttf"
        }
    
        property color mainpageColor        : "#E3F2FD"
        property color mainpageToolbarColor : bluredColor
    }

    آیا این روش بهینه و درست است ؟ و یا راه بهتری هم وجود دارد ؟

    با سلام و درود،

    روشی که به کار گرفته‌اید صحیح است اما حرفه‌ای و پویا نیست.

    پیشنهاد من ایجاد یک کلاس در سمت بک‌اِند تحت C++ مشتق شده از QObject است.

    برای مثال کلاس زیر را در نظر بگیرید.

    #pragma once
    #ifndef STYLE_HPP
    #define STYLE_HPP
    
    #include <QObject>
    #include <QColor>
    
    class Style : public QObject
    {
        Q_OBJECT
        Q_PROPERTY(QColor primary      READ primary    WRITE setPrimary    NOTIFY primaryChanged)
        Q_PROPERTY(QColor secondary    READ secondary  WRITE setSecondary  NOTIFY secondaryChanged)
        Q_PROPERTY(int    h1           READ h1         WRITE setH1         NOTIFY h1Changed)
    
    public:
        Style();
        ~Style();
    
        QColor primary      () const;
        QColor secondary    () const;
        int h1              () const;
    
    public slots:
        void setPrimary     (const QColor &color);
        void setSecondary   (const QColor &color);
        void setH1          (const int &size);
    
    signals:
        void primaryChanged ();
        void secondaryChanged();
        void h1Changed();
    
    private:
        QColor m_primary;
        QColor m_secondary;
        int    m_h1;
    
    };
    
    #endif // STYLE_H
    #include "style.hpp"
    
    Style::Style()
    {
        this->m_primary = "gray";
        this->m_secondary = "black";
        this->m_h1 = 12;
    }
    
    Style::~Style()
    {
    
    }
    
    void Style::setPrimary(const QColor &color) {
        if (color != m_primary)  {
            m_primary = color;
            emit primaryChanged();
        }
    }
    
    QColor Style::primary() const {
        return m_primary;
    }
    
    void Style::setSecondary(const QColor &color) {
        if (color != m_secondary)  {
            m_secondary = color;
            emit secondaryChanged();
        }
    }
    
    QColor Style::secondary() const {
        return m_secondary;
    }
    
    void Style::setH1(const int &size) {
        if (size != m_h1)  {
            m_h1 = size;
            emit h1Changed();
        }
    }
    
    int Style::h1() const {
        return m_h1;
    }

    تابع Main

    #include <QGuiApplication>
    #include <QQmlApplicationEngine>
    #include <QQmlEngine>
    #include <QQmlContext>
    #include "style.hpp"
    
    int main(int argc, char *argv[])
    {
        QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
    
        QGuiApplication app(argc, argv);
    
        QQmlApplicationEngine engine;
    
        QQmlContext *context = engine.rootContext();
    
        Style style;
    
        const QUrl url(QStringLiteral("qrc:/main.qml"));
        context->setContextProperty("Style", &style);
    
        QObject::connect(&engine, &QQmlApplicationEngine::objectCreated,
                         &app, [url](QObject *obj, const QUrl &objUrl) {
            if (!obj && url == objUrl)
                QCoreApplication::exit(-1);
        }, Qt::QueuedConnection);
        engine.load(url);
    
        return app.exec();
    }

    و در بخش QML به این صورت:

    import QtQuick 2.12
    import QtQuick.Window 2.12
    import QtQuick.Layouts 1.12
    import QtQuick.Controls 2.12
    
    Window {
        visible: true
        width: 640
        height: 480
        title: qsTr("Hello World")
    
        Rectangle {
            anchors.fill: parent
            color: Style.primary
    
            ColumnLayout {
                anchors.centerIn: parent
    
                Text {
                    text: qsTr("Hello, World!")
                    color: Style.secondary
                    font.pixelSize: Style.h1
                }
    
                Slider {
                    from: 12
                    to: 64
                    snapMode: Slider.SnapAlways
                    stepSize: 0.5
                    onValueChanged: {
                        Style.setH1(value)
                    }
                }
    
                Switch {
                    onCheckedChanged: {
                        if(checked) {
                            Style.setPrimary("green")
                            Style.setSecondary("orange")
                        } else {
                            Style.setPrimary("gray")
                            Style.setSecondary("black")
                        }
                    }
                }
            }
        }
    }

    مثالی که زدم صرفاً یک روش مفهومی (Concept) است و شما می‌تونید تغییر و توسعش بدین.

    • تشکر شده 1

  14. در 2 ساعت قبل، nabegheh95 گفته است :

    سلام

    من سالهاست تجربه کار با ویژوال استودیوC++  رو دارم ولی به تازگی میخوام شروع کنم Qt را یا بگیرم.

    یه سوال داشتم. اگر add ons مربوط به qt در ویژوال استودیو را نصب کنم و با کتابخانه های qt کار کنم. آیا برنامه کامپایل شده نهایی (دسکتاپی) در هر سیستم عاملی قابل اجراست؟ مثلا در سیستم عامل لینوکس یا اندروید (موبایل) ؟

    سلام،
    افزونهٔ Qt در Visual Studio تنها امکان توسعهٔ برنامه‌های تحت کیوت رو در محیط ویژوال استودیو می‌دهد (بنابراین هماهنگی کامل با فناوری‌های اختصاصی کیوت را نخواهد داشت). در صورتی که شما کامپایلر و تنظیمات qmake یا cmake را برای پلتفرم‌های مورد نظر به درستی تنظیم کنید می‌تونید خروجی مناسب را تهیه کنید.

    دقت کنید که برای iOS و Linux شما باید روی پلتفرم‌های مک و لینوکس خروجی بگیرید.

    در 2 ساعت قبل، nabegheh95 گفته است :

    یا اینکه باید پروژه را به این سیستم عاملها منقل کنم و مجددا تحت این سیستم عاملها کامپایل کنم؟

    چطور میتونم با کمترین کار و دردسر، برنامه ای نهایتا داشته باشم که در همه سیستم عاملها قابل اجرا باشد؟

    قبلا از توضیحتون متشکرم

    برای iOS و macOS بهترین روش همین هست که شما در پلتفرم مربوط به خودشون کامپایل کنید. حتی برای لینوکس هم بهتره از همین روش استفاده کنید (هرچند به کمک روش کراس کامپایل می‌تونید خروجی بگیرید).

    در 2 ساعت قبل، nabegheh95 گفته است :

    چطور میتونم با کمترین کار و دردسر، برنامه ای نهایتا داشته باشم که در همه سیستم عاملها قابل اجرا باشد؟

    سعی کنید از استاندارد‌ها و رابط‌های خاص ویندوز استفاده نکنید، سعی کنید استاندارد‌های هر پلتفرم رو برای خودش اعمال و تحت چهارچوب و قوانین کیوت طراحی و توسعه انجام بدین. در این صورت بدون دردسر‌های متداول می‌تونید برنامهٔ خودتون رو برای پلتفرم مقصد خروجی و اجرا کنید.

    این بخش هم مقالات و آموزش‌های مناسبی موجود هستند که پیشنهاد می‌کنم بررسی بفرمایید.

    • پسندیدن 2

  15. در 12 ساعت قبل، androidWithQt گفته است :

    سلام روز بخیر

    من میخوام توی اپلیکیشنم مثلا گالری رو باز کنم و باید اولش permission  بگیرم. وقتی برای بار اول اینکارو می کنم و صفحه ی اجازه گرفتن بالا میاد و من میزنم اجازه دارد برنامه crash می کنه ولی اگه خارج شم و دوباره وارد شم گالری رو باز می کنه.جالب اینه که حالا اگر من مدل permission دیگه مثلا برای تماس تلفنی رو حالا بزنم بدون مشکل انجام میشه حتی برای اولین بار

    میخواستم ببینم کسی میدونه مشکل  کجاست؟

    ورژنsdk :24.4.1

    اندروید گوشی 6 برایgalaxygrandprime+

    target api:api28 android 9

    توی android manifest هم اضافه کردم permission هارو

    سلام،
    بهتر بود نسخهٔ کیوت رو هم مشخص می‌کردین. به هر حال سعی کنید به نسخه آخر SDK به‌روز‌ رسانی کنید و همچنین تنظیمات نهایی رو روی نسخهٔ Release و Key رو اعمال کنید. نباید مشکلی داشته باشه مگر اینکه کد‌های شما مشکلی داشته باشند که در این صورت بهتر است یک بار فرایند اجرا رو دیباگ کنید و خطایی که موقع کرش ساطع می‌شه رو بفرستید تا بهتر بتونیم در موردش نظر بدیم.


  16. ویژگی Dark Mode !؟ ? این مهم است که پشتیبانی از این ویژگی مخصوصاً در محیطی که قرار است کاربری مداوم داشته باشد تعبیه شود! همانند ویژگی حالت تاریک در macOS و یا تلگرام و دیگر نرم‌افزار‌ها که بدون شک برای تجربه‌ کاربری و در نظر گرفتن سلامت چشم بسیار مهم است.

    بنابراین، گزارشی در مورد ویژگی حالت تاریک ارسال شده که آیا این ویژگی در این نسخه موجود نیست؟ (چرا که در نسخه‌های بسیار قبل تصاویر اسپویل شده از این ویژگی منتشر شده بود).

    پاسخ : ویژگی فوق موجود هست اما غیرفعال و خفی سازی شده ? قرار نیست تا نسخهٔ ۱.۰ از آن رونمایی شود. در واقع بسیاری از ویژگی‌های خیره کننده تنها در نسخهٔ نهایی و فاز‌های بعدی اعمال و در دسترس قرار خواهد گرفت (چرا که پروژه به صورت رسمی رونمایی نشده).

    • پسندیدن 1

  17. با سلام،

    امروز صبح نسخهٔ آلفا ۰.۵ با شماره بیلد ۳۴۳ منتشر شد، طبق استقبال خوب و صمیمانهٔ دوستان گزارشاتی ارسال شده تقریباً از ۳۰ کاربر اولیه بود که اکثراً فاقد کارت گرافیکی یا حتی در محیط مجازی تست شدن به صورت زیر هستند:

    • مشکل کرش و هنگ کردن نرم‌افزار در سیستم‌هایی که فاقد کارت گرافیکی یا درایور‌های نصب شده هستند (مشکل گزارش شده در نسخهٔ Fanoox Standard)
    • مشکل کرش برنامه بعد از بازدید‌های پشت سر هم از پکیج‌های آموزشی به صورت تصادفی
    • مشکل مصرف پردازنده‌ٔ بالا در نسخهٔ Software و Standard
    • مشکل پذیرش شماره تلفن معتبر
    • مشکل ناهماهنگی در بخشی از فونت‌ها و خطای DirectWrite
    • مشکل ارتفاع کم در بخش اسکرول دربارهٔ ما و گزینه‌های سوألات متداول
    • عدم سوئیچ به صورت خودکار در بخش تأیید شماره وارد شده
    • خطای رنگ در بخش foregroundActivated
    • نمایش نوتیفیکیشن بعد از هر بار به‌روز‌رسانی پروفایل
    • عدم بازیابی و تغییر رمزعبور
    • عدم اعمال محدودیت در اسلایدر امتیاز
    • عدم بررسی آدرس پست الکترونیکی و شمارهٔ موبایل در بخش پروفایل و زمان ثبت‌نام
    • ارسال مقدار شمارهٔ موبایل نامعتبر
    • عدم هماهنگی استایل دکمه‌های خروج پروفایل
    • عدم پذیرش کلید Enter در تأیید ایمیل و شمارهٔ همراه
    • عدم هماهنگی چیدمان در متن‌های سوألات متداول
    • ارسال مقادیر عدد در عنوان‌ نظرات
    • عدم غیرفعال شدن دکمهٔ ارسال نظر بعد از ارسال و تأیید

    خطاهای فوق را به صورت اولویت بندی نوشتم تا بر اساس مهمترین حل شوند.

    • ترکوندی! 1

  18. اولین پلتفرم آموزشی چند منظورهٔ بومی

    اگر شما به دنبال فراگیری مهارت خاصی در زندگی خود هستید، فانوکس بستر مناسبی برای شما است؛ نام فانوکس الهام گرفته از  فانوس دریایی است که نماد پیدا کردن  مسیر  و نور راهنما تا رسیدن به مقصد می‌باشد.

    هدف :  آموزش و یادگیری هوشمند در هر زمان و هر جا برای بهبود زندگی و کسب و کار

    این تاپیک برای این منظور ایجاد شده است که پروژه معرفی و بازخورد‌های آن در این بخش اعلام و اصلاح شوند. بنابراین تمامی دوستان و علاقه‌مندانی که بازخورد‌هایی برای آن دارند می‌توانند در این بخش آن را اعلام کنند تا به کمک هم آن را اصلاح و توسعه دهیم.

    نکته: نسخهٔ ریلیز شده ویژگی ثبت خطاها را دارد که به شما اجازه می‌دهد کد و پیغام خطا را کپی و در اختیار ما قرار دهید. بنابراین شرط جاری روی مُد User و فلگ‌های Info، Warning، Failed و Critical نیز تنظیم شده‌اند که می‌توانید در صورت مشاهده آن‌ها را تقسیم بندی کنید.

    if(DeveloperMode::IsEnable) {
      Logger::LoggerModel = Logger::Mode::User;
      Log("Log Message : " + Event , LoggerType::Info);
      Log("Log Message : " + Event , LoggerType::Warning);
      Log("Log Message : " + Event , LoggerType::Failed);
      Log("Log Message : " + Event , LoggerType::Critical);
    }

    پیش اطلاعات فنی

    • انجین : سِل Cell
    • رابط کاربری: JavaScript، QML و فناوری Qt Quick
    • کتابخانه‌ها : STL, OpenSSL, Curl و Qt
    • سمت سرور: Php7.2 و  MySQLi MariaDB (در آینده همین بخش رو هم احتمالاً با ++C توسعه بدم).
    • رابط‌های برنامه‌نویسی: Restful Api v.1.0 در قالب JSon
    • نسخهٔ فعلی: ۰.۵ آلفا
    • پلتفرم‌های پشتیبانی دسکتاپ : Windows, macOS, Linux
    • پلتفرم‌های پشتیبانی موبایل و تبلت : iOS, Android, iPadOS
    • معرفی در آی‌او‌استریم

    macbook-2.png

    • نسخهٔ فعلی توسعه یافته : ۰.۵.۳۴۳
    • ریلیز شده در سه حالت Normal, OpenGLEs و Software Mode

    هدف از این روش ریلیز این هست که سیستم‌هایی که دارای کارت گرافیکی ضعیف‌تر و یا بدون نصب کارت گرافیک و درایور آن هستند را تحت پوشش دهیم، بنابراین نسخهٔ Software Mode تنها مناسب برای سیستم‌های اداری و مشابه آن هستند که عموماً خبری از کارت گرافیکی و یا درایور‌های نصب شده بر روی آن‌ها نیست ?

    دوستان توجه داشته باشند که برای بازخورد‌ها و اعلام نظرات توسعه حتماً از مُد اجرای برنامه‌ٔ خودشون و نوع سیستم‌عامل و شرایط سخت‌افزاریشون مطلع باشند تا بتونیم به درستی مشکلات احتمالی را حل کنیم.

    در ادامه بعد از نظر نسخهٔ آلفا شروع به بررسی و حل مشکلات احتمالی در مسیر توسعه خواهیم کرد.

     

    • ترکوندی! 2

  19. در 10 دقیقه قبل، 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.

     

    سلام،

    قبل از پرسید سوأل جستجو کنید!

    خطای cannot find -lGL - محیط توسعه Qt Creator - جامعهٔ برنامه‌نویسان مُدرن ایران


  20. با سلام،

    همانطور که می‌دانید، مستندات کتابخانهٔ کیوت در بخش Help محیطِ Qt Creator یکی از بهترین و در دسترس‌ترین مستنداتی است که در اختیار توسعه‌دهندگان قرار گرفته است تا بتوانند هر زمان که نیاز باشد در حالت آفلاین به بانک عظیمی از مستندات و راهنمایی‌های آن دسترسی داشته باشند.

    حال با توجه به مزایای این بخش در کیوت کریتور، روشی را پیشنهاد می‌کنیم که به شما اجازه می‌دهد مستندات STL زبان را به این بخش اضافه کنید تا دیگر نیازی نباشد به مرجع آنلاین آن مراجعه کنید.

    برای این کار کافی است مستندات مرجع استاندارد ۱۷ را از این لینک دریافت کنید. معمولاً آخرین نسخه و همچنین نسخه‌های پیشین مستندات آفلاین مرجع سی‌پلاس‌پلاس در این بخش برای همگان ارائه می‌شود.

    فایل qch را استخراج کرده و به مسیر Preferences و گزینهٔ Help به زبانهٔ Documentation بروید و با زدن دکمهٔ Add فایل qch را انتخاب و به مستندات اضافه کنید.

    Screen-Shot-2019-06-27-at-20.00.17.jpg

    Screen-Shot-2019-06-27-at-20.04.21.jpg

    Screen-Shot-2019-06-27-at-20.07.43.jpg

    از این پس می‌توانید به آرشیو جامع مستندات مرجع cppreference.com در محیط کیوت کریتور دسترسی داشته باشید. ?

    • پسندیدن 1
    • ترکوندی! 1

  21. در 3 دقیقه قبل، androidWithQt گفته است :

    درصورتیکه ورژن sdk و ndk

    Android settings are OK. (SDK Version: 24.4.1, NDK Version: 18.1.5063045)باشه خطای زیر رو بهم میده:


    A problem occurred configuring root project 'android-build'.

     

    > Failed to install the following Android SDK packages as some licences have not been accepted.

    build-tools;28.0.2 Android SDK Build-Tools 28.0.2

    To build this project, accept the SDK license agreements and install the missing components using the Android Studio SDK Manager.

    Alternatively, to transfer the license agreements from one workstation to another, see Exporting licenses - Android Studio Project Site

    Using Android SDK: C:\Users\j1\Desktop\sdk1

    * Try:

    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

    * Get more help at Gradle | Search for Help with Gradle

    خب دوست عزیز انتظار داری بدون به‌روز‌رسانی مخازن و پذیرش مجوز‌ها کار کنه؟

    برای این کار باید به زبانهٔ Device رفته و مخازن رو به‌روز کنید.

    در مورد این کار تحقیق کنید.


  22. در 9 دقیقه قبل، androidWithQt گفته است :

    سلام.من اولین باره میخوام تو کیوت خروجی اندروید بگیرم و به خطای زیر خوردم:

    androideabi/bin\ld: error: cannot find -lc++

    clang++: error: linker command failed with exit code 1 (use -v to see invocation)

    ورژن sdk و ndk

    Android settings are OK. (SDK Version: 24.4.1, NDK Version: 20.0.5594570)

    من از کیوت 5.12.1 استفاده می کنم

    سلام،

    در کیوت ۵.۱۲ از NDK R18 استفاده کن، نسخهٔ R20 کیوت ۵.۱۳ می‌طلبه.

    • پسندیدن 1

  23. در در 1 تیر 1398 در 11:02، MahdiGameMaker گفته است :

    دوستان ربطی به jdk نداره؟

    jdk 8 رو نصب کردم!

    تو ویندوز قبلا ndk 16 بود کار میکرد وقتی تو ویندوز به  ndk20 ابدیت کردم اونجا هم ارور میداد!

    سلام،

    شما باید به نسخهٔ خود Qt هم توجه کنید، شما از نسخهٔ کیوت ۵.۱۲ داری استفاده می‌کنی که NDK 20 رو پشتیبانی نمی‌کنه، مگر اینکه فلگ -nostdlib++ رو اعمال کنی که در زیر مثال زدم. بنابراین تنها از کیوت ۵.۱۳ به اینور پشتیبانی می‌شه، برای نسخه‌های پایین‌تر از NDK R18 استفاده کن.

    QMAKE_LINK += -nostdlib++

    درضمن NDK ویندو برای ویندوز هست نباید اون رو برای لینوکس استفاده کنی (نسخهٔ مخصوص لینوکس رو دریافت کن).

    بعد از دریاف جهت به‌روزرسانی‌ مخازن هم حتماً باید از شبکهٔ پایدار استفاده کنی تحت وی‌-‌پی‌-ان تا بتونی دانلود رو به درستی انجام بدی.

     

    قبل از پرسش‌های تکراری هم حتماً یک جستجو در وب‌سایت انجام بده تا به پاسخ‌های مرتبط برسی :

    آخرین تغییرات و به‌روزرسانی‌های NDK - برنامه نویسی تحت محصولات گوگل - جامعهٔ برنامه‌نویسان مُدرن ایران

    مشکل خروجی گرفتن از اندروید در Qt 5.12 - موبایل و اِمبِد‌ها - جامعهٔ برنامه‌نویسان مُدرن ایران

    پیغام خطا هنگام خروجی گرفتن در اندروید - فناوری Qt Quick و QML - جامعهٔ برنامه‌نویسان مُدرن ایران

    • هاها! 1

  24. نسخهٔ ۵.۱۳.۰ کیوت با به‌روز‌رسانی‌ها، ویژگی‌های جدید و بهبود‌های بسیاری همراه با پشتیبانی از OpenSSL 1.1 انتشار یافت.

    کیوت برای وب‌اسمبلی (Qt for WebAssembly)

    پشتیبانی از WebAssembly در این نسخه به طور کامل ارائه شده است که به کاربران اجازه می‌دهد برنامه‌های نوشته شده سی‌پلاس‌پلاس تحت کیوت را در سمت سرور راه‌اندازی کنند تا بدون نیاز به نصب هرگونه پکیجی از کیوت در سمت کلاینت تنها با استفاده از مرورگر خود به آن دسترسی داشته باشند.

    با توجه به گزارشات کیوت سرعت خود را برای توسعهٔ این ویژگی تنظیم کرده است. همچنین گوگل در رویداد اخیر خود به نحوهٔ اجرای برنامه‌های سی++ تحت این ویژگی اشاره کرده است.

    برخی از مثال‌های موجود برای این ویژگی در این آدرس موجود هستند.

    ماژول Qt GUI

    ماژول Qt GUI کلاس‌ها را برای یکپارچه‌سازی پنجره‌های سیستمی، مدیریت رویداد‌ها، OpenGL و OpenGLES، گرافیک ۲ بعدی، تصویرسازی پایه، فونت‌ها و متن‌ها خلاصه کرده است.

    ماژول Qt QML

    در این به‌روز‌رسانی ماژول کیوت‌کیو‌ام‌اِل یک چهارچوب برای توسعهٔ رابط کاربری مایع (Fluid) در زبان QML را فراهم می‌کند. در این نسخه پشتیبانی از شمارنده‌های سی‌پلاس‌پلاس (enums) و همچنین مقادیر اتصال null در جاوا‌ اسکریپت در زمان کامپایل بهینه‌سازی شده است. همچنین پشتیبانی از ساخت توابع ۶۴ بیتی در ویندوز در پُشته (اِستک) تحت توابع JITed فراهم شده است.

    ماژول کیوت کوئیک (Qt Quick) و کنترل‌های کیوت‌ کوئیک ۲.۰ (Qt Quick Controls 2.0)

    به‌روزرسانی‌هایی جهت نوشتن برنامه‌های QML و کنترل‌های رابط کاربری در کتابخانه‌های استاندارد اعمال شده‌اند. همچنین پشتیبانی از TableView با ویژگی مخفی سازی ردیف‌ها و ستون‌ها اضافه شده است.

    ماژول وب‌انجین (Qt WebEngine)

    وب‌انجین با ویژگی‌های سریع کرومیوم به نسخهٔ ۷۳ به‌روز‌رسانی شده است. همچنین ویژگی نمایش PDF تحت افزونه‌های کرومیوم، گواهی‌های پشتیبانی از کیو‌ام‌ال، رابط‌های برنامه‌نویسی و یک thread-safe ارائه به آن اضافه شده است.

    ماژول شبکه (Qt Network)

    این ماژول مجموعه‌ای از رابط‌های برنامه‌نویسی را برای برنامه‌های کاربردی که از TCP/IP استفاده می‌کنند فراهم می‌سازد که پشتیبانی از کانال امن برای سوکت SSL و پشتیبانی از OCPS به آن اضافه شده است. نسخهٔ ۵.۱۳.۰ اکنون از OpenSSL 1.1 برای پشتیبانی از اتصالات SSL در لینوکس و اندروید استفاده می‌کند.

    ماژول رسانه‌ (Qt Multimedia)

    همانطور که می‌دانید این ماژول، مجموعه‌ای از انواع QML و کلاس‌های C++ را برای پردازش محتوای چند‌رسانه‌ای فراهم می‌کند که در این به‌روز‌رسانی بخش بی‌نظیری در QML Video Output با استفاده از ویژگی flushMode و پشتیبانی از GStream برای ویندوز، مک‌او‌اِس و هدر HTTP و نقش‌های صوتی برای اندروید اضافه شده‌است.

    ماژول Qt KNX

    سرویس KNX به عنوان خدمات اتصال در سمت کاربر، جهت اتصال برای ارسال پیام به KNX و کنترل ویژگی‌های دستگاه آن که معمولاً در ساخت اتوماسیون استفاده می‌شود در نسخهٔ ۵.۱۳ رابط‌های برنامه‌نویسی کاربری امنی را دریافت کرده است.

    ماژول Qt OPC UA

    نسل بعدی برنامه‌های صنعتی ۴.۰ بر اساس معماری کاربر/سرور محور است که شامل برخی از به‌روز‌رسانی‌ها می‌باشد. به طور عمده رابط‌های برنامه‌نویسی C++ به طور کامل پشتییبانی و پیش‌نمایش‌های فنی از رابط‌های برنامه‌نویسی QML و یک رابط برنامه‌نویسی امن برای سمت کاربر در سی++ ارائه شده است.

     

    محیط توسعهٔ Qt Creator

    برخی از به‌روز‌رسانی‌ها در این نسخه اعمال شده‌اند که شامل بهبود‌های مرتبط با رابط کاربری و همچنین ابزار Clang Analyzer و یک سری تجزیه کننده‌های QML ارائه شده است. همچنین پشتیبانی از ECMAScript 7 و افزونه پروفایل حدید برای نرم‌افزار در حال اجرا برای لینوکس اضافه شده است.

     

    محیط طراحی Qt Design Studio 1.2

    آخرین نسخهٔ طراحی و ابزار توسعه Qt UI در حال حاضر شما را به یکپارچگی طرح‌های خود از Sketch (علاوه‌بر فتوشاپ) دعوت می‌کند که اجازه می‌دهد آن‌ها را به کد QML تبدیل کنید. به خاطر محبوبیت ابزار Sketch برای طراحان آن به این محیط اضافه شده است و این باعث می‌شود رابطهٔ بین طراحی و توسعهٔ محصول بسیار راحت‌تر و نرم‌تر صورت بگیرد. همچنین گرادیان‌های پیچیده از شکل‌های کیوت کوئیک به آن اضافه شده است و بهبود‌ها و اصلاح‌های مختلفی اعمال شده است.

     

    کیوت برای پایتون

    در این به‌روز‌رسانی تعداد بسیار زیادی از بهبود‌ها به اولین نسخهٔ رسمی در کیوت ۵.۱۲ اضافه شده است.

     

    پیشنهادات

    • در صورتی که مایل به تجربهٔ ویژگی‌های جدید کیوت مانند پشتیبانی از رندر برنامه‌ها در وب و یا حل بعضی از کمبود‌ها مانند TableView و غیره در کیوت کوئیک بهره‌مند باشید می‌توانید کتابخانهٔ خود را به نسخهٔ ۵.۱۳ به‌روز‌رسانی کنید.
    • نکته : با توجه به مشکلات ناشی از OpenSSL و عدم هماهنگی درست آن در نسخه‌های اندروید و لینوکس که توسعه‌دهنده مجبور به نصب نسخه‌های سفارشی و قدیمی آن کتابخانه بود، از این پس می‌توانید در کیوت ۵.۱۳ از نسخهٔ OpenSSL 1.1 استفاده کنید و اپلیکیشن‌های خود را تحت آخرین به‌روز‌رسانی‌های آن توسعه دهید.
    • پشتیبانی از ویژگی‌های ویژهٔ کرومیوم و همچنین حل مشکلات شمارنده‌ها در C++ یکی دیگر از دلایلی هستند که می‌توانند شما را ترغیب به استفاده از این نسخه کند.

     

    شما می‌توانید این نسخه‌ را همین الآن برای پلتفرم‌های تسعهٔ ویندوز، مک‌او‌اِس و لینوکس دریافت و نصب کنید.

     

     

    • پسندیدن 1
×
×
  • جدید...