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

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

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

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

  • روز های برد

    230

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

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

    سلام، قبلاً برای این کار نیاز بود که با کلاس QAndroidJniObject کار کنید و مسیر صریحش رو به دست بیارید. اما از نسخهٔ ۵.۱۵ مسیر صریحش رو بر می‌گردونه، کافیه به شیوهٔ زیر از مسیر‌های استاندارد استفاده کنید: نسخهٔ QML FileDialog { id: fileDialog title: "Choose File Attachment" folder: StandardPaths.writableLocation(StandardPaths.PicturesLocation) ... } نسخهٔ ++C const QStringList picturesLocations = QStandardPaths::standardLocations(QStandardPaths::PicturesLocation); QFileDialog dialog; dialog.setDirectory(picturesLocations.last());
  2. کامبیز اسدزاده

    خب در این صورت کافیه یکی از روش‌های زیر و یا دیگر روش‌ها را برای نمونه سازی از کلاس NotificationClient به کار بگیرید: NotificationClient notificationClient; notificationClient.setNotification("Hello, World!"); QScopedPointer<NotificationClient> notificationClient(new NotificationClient()); notificationClient->setNotification("Hello, World!"); std::unique_ptr<NotificationClient> notificationClient; notificationClient->setNotification("Hello, World!");
  3. کامبیز اسدزاده

    درود، به روش‌های متفاوتی می‌تونید این کار رو انجام بدین. در دسترس‌ترین روش که در مستندات کیوت هم موجود است فراخوانی از طریق QAndroidJni هستش که در زیر مثال واضحی دارد. https://doc.qt.io/qt-5/qtandroidextras-notification-example.html همچنین روش دیگری هم وجود دارد که برای iOS و Android به طریق FireBase می‌تونید از این ویژگی استفاده کنید. https://firebase.google.com/docs/cpp/setup نسخهٔ اندروید : https://firebase.google.com/docs/cpp/setup?platform=android نسخهٔ آی‌او‌اس : https://firebase.google.com/docs/cpp/setup?platform=ios
  4. کامبیز اسدزاده

    چه خبره دوست عزیز، این چیزی که شما فرستادین ظاهراً مربوط به یک پروژهٔ OpenSim هست و خارج از حوصلهٔ من خواهد بود که ۱۰۰۰ خط کد رو بررسی کنم. لطف کنید این لینک رو بررسی کنید آموزش نحوهٔ ساختش رو داده : https://github.com/opensim-org/opensim-core#building-from-the-source-code
  5. کامبیز اسدزاده

    محتوای درون فایل CMakeLists.txt اینجا قرار دهید تا بررسی شود.
  6. کامبیز اسدزاده

    به قوائد تعریف متغیر در سی‌پلاس‌پلاس توجه کنید. به نظر میاد شما دارید از یک پروژه‌ای استفاده می‌کنید که فایل‌های سرآیند اون در اختیار شما نیست و با چنین مشکلات متنوعی مواجه شدین. خطاهای فوق داره می‌گه موارد مربوطه تعریف نشده. پیشنهاد می‌کنم مقالات زیر را در مورد سی‌پلاس‌پلاس مطالعه کنید.
  7. کامبیز اسدزاده

    این که خطا نیست، ماکروست! یکجور شرط هست، برای این نوشته شده که وقتی کامپایلر شما استاندارد ۱۱ رو پشتیبانی نکنه پیام خطا بده! و الآن هم ظاهراً از کامپایلر و محیطی استفاده می‌کنید که برای عصر یخبندانه. توضیه می‌کنم از کامپایلر‌های جدید استفاده کنید.
  8. کامبیز اسدزاده

    سلام، گزینه‌های زیر را هم بررسی کنید : https://ncreportsoftware.com https://cute-report.com https://www.kdab.com/development-resources/qt-tools/kd-reports
  9. کامبیز اسدزاده

    سادست، ویژوال استودیو حداقل نسخهٔ ۲۰۱۷ را نصب کنید. بعد از نصب آن، کیوت را نصب کنید به صورت خودکار کیت‌ها را شناسایی خواهد کرد.
  10. کامبیز اسدزاده

    سوألتون رو با جزئیات بیشتر بپرسید تا بتونیم مسئله را بررس پلتفرم (سیستم‌عامل) شما چی هست؟ اگر ویندوز است که باید کیت توسعهٔ ویندوز را نصب کنید. اگر لینوکس یا مک هست که باید به ترتیب gcc و xcode در آن‌ها نصب شود. پیشنهاد آخر این که نسخهٔ آخر را به صورت آنلاین نصب نمایید.
  11. درود، منظور از این مقاله آموزش ساخت یک وب‌سایت نیست، صرفاً برای اطلاع‌رسانی جهت آشنایی با امکان این کار در سی++ بود. برای نحوهٔ کار و ساخت و ساز یک وب‌سایت تحتِ سی‌پلاس‌پلاس در فرصتی مناسب آموزش‌هایی ارائه خواهد شد.
  12. کامبیز اسدزاده

    اکثر برنامه‌های زیبایی که در حال حاضر می‌بینید نسبت به نوع سیستم‌عامل و تصمیمات توسعه‌دهنده و منظور استفادهٔ آن توسعه یافته‌اند. بعضی از آن‌ها به صورت کاملاً بومی تحت رابط‌های برنامه‌نویسی خودِ سیستم‌عامل و چهارچوب‌های اختصاصی طراحی شده‌اند، و برخی تحت یک سری کیت‌ها و کتابخانه‌های چندمنظوره. برای مثال، برنامه‌های خالص (نه چند‌سکویی) بومی در سیستم‌عامل ویندوز معمولاً تحتِ رابط‌های برنامه‌نویسی بومی خود ویندوز Win32 Api یا MFC توسعه می‌یابند. رابط‌های برنامه‌نویسی Win32 Api بسیار سطح پایین بوده و استفاده از آن بسیار دشوار است با این مزیت که هر کاری می‌توان با آن انجام داد. نوع MFC را می‌توان به صورت منسوخ شده در نظر گرفت چون در محصولات مدرن دیگه ازش یاد نمیشه. در سیستم‌عامل مک رابط‌های Cocoa برای این منظور نیز ارائه شده‌اند. از طرفی در لینوکس ما رابط‌های برنامه‌نویسی مستقیمی برای ساخت و ساز در کنار هستهٔ سیستم‌عامل نداریم. اما پروتکل‌هایی برای ساخت و ساز این مبحث وجود داره که به نام X Window System شناخته می‌شوند که تحتِ کتابخانه‌هایی مثل GTK، FLTK یا Qt و wxWidgets در سطوح بالا‌تر در دسترس و به راحتی می‌شه باهاشون کار کرد. این گزینه‌ها به صورت چند سکویی هستند و نیازی نیست شما نسبت به هر نوع سیستم‌عامل از اول برنامه‌نویسی انجام دهید. مزایای این نوع کتابخانه‌ها بیشتر از آن‌چیزی است که شما فکرش رو می‌کنید. پیشنهاد من این است، اگر دیدگاه چند‌منظوره دارید، به جای درگیر شدن با سطوح پایین‌تر از رابط‌های برنامه‌نویسی (صرفاً جهت ساخت رابط‌کاربری) از کتابخانه‌ها و چهارچوب‌های مناسب مانند Qt استفاده کنید. و یا اینکه اگر محدود به یک پلتفرم کار می‌کنید سعی کنید باز هم از رابط‌های سطح‌بالای آن پلتفرم استفاده کنید. در ویندوز Win32 تحت دات‌نت، کوکوآ در مک و GTK در لینوکس. برتری استفاده از رابط‌های اختصاصی هر یک از سیستم‌عامل‌ها، صرفاً بهینه‌سازی و هماهنگی بسیار بالا و دسترسی به تمامی ویژگی‌های یک پلتفرم است. البته کتابخانه‌هایی مانند Qt نیز در لایه‌های زیرین خودشان هماهنگی‌های لازم را با این رابط‌های برنامه‌نویسی پیاده‌سازی کرده‌اند تا نیازی نباشد شما با آن‌ها درگیر شوید و تا حد قابل قبولی از آن ویژگی‌ها پشتیبانی می‌کنند. بنابراین، از لحاظ این که در همان اندازه کارآیی خواهند داشت هم تا حد بسیاری خیالتان راحت مشکل خاصی پیش نمیاد. به طور همیشگی خیر، در موارد لزوم از پردازندهٔ مرکزی برای پردازش برخی از مسائل استفاده می‌شود، مانند زمانی که راه‌انداز (درایور) کارت گرافیک قابل شناسایی نباشد و مجبوراً از روش‌های شبیه‌سازیِ رابط استفاده شود که در این صورت از پردازندهٔ مرکزی استفاده خواهد شد. از طرفی OpenGL فقط برای بازی‌سازی مورد استفاده قرار نمی‌گیرد، حتی نسخه‌های توسعه‌یافتهٔ آن با عنوان وُلکان را بررسی کنید. کتابخانه‌هایی مانند کیوت در صنایع مختلف تمامی کارهای تصویر‌سازی، ساخت فرم، اشیاء و رندرینگ بخش‌های یک برنامه را به لطف OpenGL، Direct3D و امثال آن تولید می‌کنند. اخیراً اتفاق خوبی که در مورد کیوت رُخ داده است، این است که نسبت به هر پلتفرم، از راه‌انداز و رابط‌های برنامه‌نویسی اختصاصی همان سیستم‌عامل استفاده می‌کند. برای مثال در ویندوز از Direct3D در مک از Metal و در لینوکس از Vulkan و OpenGL. به طور کلی این کتابخانه‌ها کارهای سطح پایین‌ را خودشان مدیریت می‌کنند و نیازی نیست شما با آن‌ها درگیر شوید، مگر اینکه بخواهید یک کتابخانه یا چهارچوبی مانند کیوت بسازید که قطعاً نیاز خواهد داشت بر روی هر یک از این رابط‌های اختصاصی تسلط و اشراف کامل داشته باشید. بزرگترین مزیت کتابخانه‌ای مانند کیوت در این است که وابستگی به پلتفرم در آن معنا ندارد و شما می‌توانید در هر پلتفرمی که هستید رابط‌های کاربری مورد نظر محصول خود را بسازید.
  13. کامبیز اسدزاده

    ببینید این قسمت از کد‌ها اصلاً درست نیست! چطور برای شما کامپایل میشه بعید می‌دونم آزمایشش کرده باشید! نام فرم و کلاس شما باید Login باشه نه login! حرف L بزرگ مهمه. از طرفی log.show() نباید باشه بایدlog->show() باشه به صورت اشاره‌گر! بعد شما ظاهراً دارید داخل خود فرم Login دوباره کلاس خود Login رو فراخوانی می‌کنید برای نمایش! خب این درست نیست. و اینکه برای یک فرم فرزند دیگه نیازی نیست از MainWindow استفاده کنید، از یک QWidget ارث‌بری کنید. کد‌های زیر نمونهٔ صحیح است : #ifndef LOGIN_HPP #define LOGIN_HPP #include <QWidget> namespace Ui { class Login; } class Login : public QWidget { Q_OBJECT public: explicit Login(QWidget *parent = nullptr); ~Login(); private: Ui::Login *ui; }; #endif // LOGIN_HPP #include "login.hpp" #include "ui_login.h" Login::Login(QWidget *parent) : QWidget(parent), ui(new Ui::Login) { ui->setupUi(this); } Login::~Login() { delete ui; } این هم نحوهٔ فراخوانی در پنجرهٔ اصلی (والد) : #include "mainwindow.hpp" #include "ui_mainwindow.h" #include "login.hpp" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); } MainWindow::~MainWindow() { delete ui; } void MainWindow::on_pushButton_clicked() { Login *log = new Login; log->show(); } به درستی کار می‌کنه.
  14. کامبیز اسدزاده

    نمی‌دونم این رو دقیقاً کجا دارید می‌نویسید، اما طبق نمونه‌ای که گرفتین روش به کار گیری show درست نیست و باید خطا بده این رو امتحان کنید : Login *login = new Login; login->show(); یک کلاس بسازید با نام Login مثلاً، بعد یک نمونه بگیرید و کد مربوطه رو داخل یک رویدادی مثل کلیک شدن یا بارگذاری فرم قرار بدین. نمونهٔ کامل‌تر : void MainWindow::on_pushButton_clicked() { Login *log = new Login; log->show(); } اگه مشکلی بود هم سعی کنید جزئیات بیشتری ارائه کنید.
  15. کامبیز اسدزاده

    درود، کدی که نوشتین رو ارسال کنید تا بررسی بشه.
  16. کامبیز اسدزاده

    درود، اگر تنها دلیل شما کم حجم شدن برنامه است، این دلیل کافی نیست و از نظر من منطقی هم نیست. مزایای کیوت رو در نظر بگیرید، چند‌سکویی بودن و پشتیبانی از ویژگی‌های متنوع که سال‌هاست خودش رو ثابت کرده. آیا چیزی که می‌خواهید بسازید علاوه بر این ویژگی‌ها موارد دیگری هم به همراه کم حجم‌تر بودن را دارد؟ هرچند حجم برنامه شاید در زمان گذشته بسیار مهم بود، اما اکنون دیگر نیازی برای نگرانی در این باره وجود نداره.
  17. کامبیز اسدزاده

    درود، پیشنهاد اول این است که از ویژوال استودیوی حداقل ۲۰۱۷ استفاده کنید. پیشنهاد دوم این هست بر اساس راهنمای موجود از هر کتابخانه تنظیمات و کامپایل را انجام دهید. در پست زیر نیز اشاره‌ای به نحوهٔ افزودن کتابخانه‌ها به محیط VS شده است.
  18. کامبیز اسدزاده

    من فکر می‌کنم خدمات بر پایهٔ بستر بلاک‌چین و رمز‌ارز گزینهٔ خوب و هماهنگ شده‌ای در حوزهٔ سیستم‌های دیجیتالی هستش. این سیستم می‌تونه فارغ از اینکه قومیت، موقعیت‌جغرافیایی و اثرات سیاسی در اختیار همگان قرار بگیره. ظاهراً ویزا و پی‌پال هم در این حوزه وارد برنامه‌ریزی تحتِ خدمات ارز‌های دیجیتالی شده‌اند.
  19. سپاسگزاریم، بهتر بود برای موضوع جدید، یک تاپیک جدید ایجاد می‌کردید. به هر حال، این لینک رو بررسی کنید : https://wiki.qt.io/Handling_Microsoft_Excel_file_format
  20. کامبیز اسدزاده

    رونمایی از اولین درگاه پرداختِ ارزی توسط بایننس

    ما ایرانی‌ها به خصوص توسعه‌دهنده‌ها در حوزهٔ فناوری همیشه با مشکلاتی دست و پنجه نرم می‌کنیم، قطعاً می‌توان در این باره توضیحات بسیار جامعی ارائه کرد، اما یکی از این مسائل بحث محدودیت‌های شدید در پرداخت به شیوهٔ ارزی و بین‌المللی است و به همین خاطر به سختی می‌شود به مشتریان خارج از کشور خدمات ارائه و هزینه‌ای در قبال آن دریافت کرد بنابراین، معمولاً دسترسی به ارائهٔ خدمات در خارج از کشور امکان‌پذیر نیست. با تفکرِ به این که، روزی خواهد رسید درگاه‌های پرداختیِ فعلی به شیوه‌های کاملاً مردمی بدون در نظر گرفتن موقعیت، قومیت و سیاست‌های خارجی در اختیار همگان قرار خواهند گرفت و این یعنی آزادی در دنیای تجارت، به گونه‌ای که با اهداف و شعار این بستر و ارز‌های دیجیتالی هم‌خوانی داشته و به نظر می‌رسد پیش‌بینی‌ها در رابطه با شکل و قالب پول‌های نسل جدید واقعاً به این سمت سوق پیدا کند. این تفکر اگر به واقعیت تبدیل بشه فشار‌های کاری در این حوزه به شدت کاهش پیدا خواهد کرد و ما می‌تونیم شاهد این باشیم که برای دریافت خدمات می‌تونیم بدون محدودیت‌های مربوط به بحث سیاسی و تحریم‌ها، آن‌ها را در اختیار داشته باشیم و این خبر خوبی هست برای من، شما و هر کسی که در زمینهٔ فناوری و علم مرتبط با آن در حال پیشرفت است. بایننس، یکی از بزرگترین صرافی‌های دنیا، ساعاتی پیش در حاشیه رویداد «هفته بلاک چین بایننس» اعلام کرد که روز جمعه نسخه بتای درگاه پرداخت مخصوص خود با نام بایننس پی (Binance Pay) را راه‌اندازی کرده است. این درگاه به کسب‌وکارهای مختلف امکان می‌دهد تا بدون نگرانی از نوسانات قیمت ارزهای دیجیتال، محصولات خود را با این ارزها بفروشند. به گزارش دیکریپت، این اقدام بایننس نشان می‌دهد که این صرافی قصد دارد تا کسب‌وکار خود را فراتر از خریدوفروش ارزهای دیجیتال پیش ببرد و در نظر دارد تا مردم را به استفاده بیش از پیش از ارزهای دیجیتال سوق دهد. گفته می‌شود که بایننس پی پاسخ این صرافی به پی پل است. بایننس در اطلاعیه خود می‌نویسد: چانگ‌پنگ ژائو (Changpeng Zhao)،‌ مدیرعامل این صرفی، در رویداد هفته بلاک چین بایننس گفت: به‌گفته ژائو، مهمترین چالش بر سر راه این سیستم، استفاده کسب‌وکارها از ارزهایی است که اکثریت مردم از آنها استفاده نمی‌کنند. او معتقد است که پذیرش ارزهای رایج به‌مراتب راحت‌تر است؛ چراکه مردم مدام از آنها استفاده می‌کنند. سیستم تازه بایننس به کاربران این امکان را می‌دهد که پرداخت خود را با ارزهای دیجیتال انجام دهند. از سوی دیگر، کسب‌وکارها استیبل کوین‌هایی با پشتوانه ارزهای رایج دریافت می‌کنند و می‌توانند هر لحظه که بخواهند آنها را به ارز رایج تبدیل کنند. صد البته در حال تنها ارز رایج پشتیبانی‌شده در سیستم پرداخت بایننس یورو است. ژائو در این باره گفت: طبق اعلام بایننس، بایننس پی سبدی از محصولات است. از جمله محصولات دیگری که در این سبد قرار دارد بایننس کارت است. بایننس کارت یک کارت اعتباری است که به کاربران امکان خرید لحظه‌ای را می‌دهد. سیستم بایننس پی هم مانند بایننس کارت از ۵ ارز دیجیتال بیت کوین، اتریوم، بایننس کوین، استیبل کوین BUSD‌ و سوایپ (SXP) پشتیبانی می‌کند. بایننس سال گذشته شرکت سوایپ را خرید. بر خلاف بایننس کارت، در خدمات بایننس پی خبری از کارت‌های فیزیکی نیست و تراکنش‌ها با استفاده از اسکنر کیوآرکد در داخل اپلیکیشن انجام می‌شود. چانگ‌پنگ ژائو در ارتباط با راه‌اندازی بی سر و صدای سرویس بایننس پی گفت: منابع آی‌او‌استریم ارز‌ دیجیتال
  21. کامبیز اسدزاده

    سلام، قبلاً در این باره سوأل و پاسخ داده شده است.
  22. کار زیاد سختی نیست! این لینک رو بررسی کنید و طبق دستورات پیش برید. به خاطر این هست که پلاکین مربوطه را کامپایل نکرده‌اید. بله پشتیبانی می‌کنه. این توضیحات رو دنبال کنید و مطابق مثال برای Sql Server انجامش بدین.
  23. کامبیز اسدزاده

    اگه منظورتون رو درست متوجه شده باشم، بله.
  24. کامبیز اسدزاده

    بله البته، به نظرم این لینک مرجع خودِ کیوت کافی باشه، تمامی دستورات و مسائل فنی داخلش هست. البته پیشنهاد من این هست صرفاً از روی کنجکاوی و برای آشنایی بیشتر با کیوت ۶ امتحانش کنید و نه برای ارتقاء محصولاتتون، برای این کار پیشنهادم اینه که منتظر حداقل کیوت ۶.۲ باشید.
×
×
  • جدید...