سید محمد عباسی 35 ارسال شده در بهمن 97 با سلام خدمت شما دوستان، درخدمت شما هستم با آموزش کتابخانهٔ chilkat، کتابخانهای مفید و کارآمد برای کار با شبکه، که بیشترین تمرکز را در شبکه دارد! به راحتی میتوانید با این کتابخانه کار کنید. کافیست کمی به زیر و بم این کتابخانه اشنا شوید تا انچه برنامه شما به شبکه نیاز دارد براورده سازد! در این اموزش نحوه اضافه کردن کتابخانه در محیط Qt Creator همراه با یک مثال ساده دانلود فایل را یاد خواهید گرفت. ابتدا نسخه متناسب با کامپایلر خود را از اینجا دانلود کنید و سپس گام به گام این مراحل را انجام دهید. 1.روی پروژه خودتان راست کلیک کنید و گزینه AddLibrary را انتخاب کنید.همانند تصویر زیر: 2.گزینه ExternalLibrary را انتخاب کنید، روی Next کلیک کنید. 3.تیک مربوط به نوع سیستم عامل خود را انتخاب کنید(در این مثال Linux) و فایل libchillat-9.5.0.a را انتخاب کنید، روی Next کلیک کنید. 4.در اینجا با کلیک بر روی Next کتابخانه را به پروژه خود اضافه کنید. 5. برنامه را اجرا کنید. فرم را به سلیقهٔ خود میتوانید طراحی کنید. اکنون یک کلاس با نام دلخواه اضافه کنید که در این مثال کلاس download است، ما فقط به یک تابع نیاز خواهیم داشت که ادرس فایل و مکان ذخیره فایل را گرفته و فایل را دانلود کند و در مکان مورد نظر ذخیره کند.پس چیزی شبیه به این را خواهیم داشت! #ifndef DOWNLOAD_H #define DOWNLOAD_H #include <QObject> #include <QFileDialog> #include <CkHttp.h> class Download : public QObject { Q_OBJECT public: explicit Download(QObject *parent = nullptr); Q_INVOKABLE bool donwloadFile(const QString & url); signals: public slots: private: QString m_filePath; bool m_success; CkHttp m_http; }; #endif // DOWNLOAD_H از Q_INVOKABLE به منظور دسترسی متد در فایل qml استفاده میکنیم، و از متغیر های m_filePath برای ذخیره مکان و m_success برای دانلود و عدم دانلود! از کلاس CkHttp برای دانلود فایل استفاده خواهیم کرد، این کلاس متدهای مختلفی را فراهم میکند، که هر کدام کاربردی دارند! برای دانلود ما از متد Download استفاده میکنیم، این متد در صورت موفقیت در دانلود فایل true و عدم دانلود false را برگشت میدهد. در فایل cpp به این صورت تابع خود را تکمیل میکنیم! #include "download.h" #include <QDebug> Download::Download(QObject *parent) : QObject(parent) { m_success= m_http.UnlockComponent("30-day trial"); if(m_success!=true) qDebug()<<"Not UnlockComponent Error: "<<m_http.lastErrorText(); } bool Download::donwloadFile(const QString &url) { m_filePath=QFileDialog::getSaveFileName(nullptr,"محل ذخیره فایل را انتخاب کنید"); if(m_filePath!="") { m_success= m_http.Download(url.toUtf8(),m_filePath.toUtf8()); if(m_success!=true) { qDebug()<<"Error Download: "<<m_http.lastErrorText(); return false; } qDebug()<<"ContentType: "<<m_http.lastContentType(); return true; } return false; } بعضی از کلاس های این کتابخانه نیاز به مجوز دارند! بدون مجوز نمیتوان از کلاس ها استفاده کرد! در کانستراکت کلاس ابتدا با متد UnlockComponent به مدت 30 روز رایگان استفاده میکنیم(30-day trial). در صورتی که مجوز به ما داده شود متغیر m_success برابر با true خواهد شد، در غیر اینصورت میتوان با متد lastErrorText خطا ها را مشاهده کرد و نسبت به رفع آن اقدام کرد.با استفاده از متد getSaveFileName از کلاس QFileDialog مکان فایل را در صورت انتخاب در متغیر m_filePath ذخیره میکنیم، بعد از انتخاب مکان ذخیره فایل بررسی میکنیم متغیر m_filePath خالی نباشد!. متد Download دو ارگومان ورودی دریافت میکند! 1.ادرس فایل 2. محل ذخیره فایل در صورتی که فایل با موفقیت دانلود شود با متد lastContentType نوع فایل را نمایش داده میشود و فایل در مکانی که از قبل انتخاب کردیم ذخیره میشود. به عنوان مثال میخواهیم قالب صحفهٔ نخست iostream را در یک فایل txt ذخیره کنیم! پس به این صورت عمل میکنیم. 1 نقل قول به اشتراک گذاری این ارسال لینک به ارسال به اشتراک گذاری در سایت های دیگر