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

GornerLabo

کاربـــر عـــــادی
  • تعداد ارسال ها

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

  • روز های برد

    6

پست ها ارسال شده توسط GornerLabo


  1. با سلام خدمت اساتید محترم. اگر پروژه ای که در کیوت ساختیم رو بخواییم از کلاس های QThread و QTimer استفاده کنیم ، در چه بخش هایی از پروژه باید استفاده کنیم؟ با توجه به جستجویی که داشتم هیچ از یک منابع به طور کامل و جامع توضیح ندادند که در پروژه های کیوت در چه قسمت هایی باید از QThread استفاده شه و در چه قسمت هایی از QTimer ! هدف من از این سوال این هست که در حین انجام یک پروسس از کدام کلاس باید استفاده کرد که ui هنگ نکنه!

    از اساتید محترم تقاضا دارم کامل این مشکل رو توضیح بدن با تشکر فراوان. 


  2. سلام و وقت بخیر. میخواستم در Qt Widget برای ویندوز نرم افزاری بسازم . اما در طراحی ui باید پنجره برنامه ( دکمه های close و minimize , restore down ) حذف بشن ودکمه هایی با طراحی جدید جایگزین بشن. مانند شکل زیر (گزینه 1 در تصویر)

    لینک تصویر

    و یک سوال دیگری در مورد همین تصویر داشتم. با توجه به گزینه 2 در تصویر به جز QTabWidget آیا کلاس دیگری هست برای طراحی ui به این سبک؟


  3. سلام. یک کلاس دارم که می‌خوام کلاس اصلی برنامه (MainWindow) رو داخلش فراخوانی کنم و ازش یه شیء بسازم. هدف اینه که از شی کلاس mainwindow می‌خوام برای دسترسی به تابعی که داخلش هست استفاده کنم. ولی زمانی که کامپایل می‌کنم این ارور رو دریافت می‌کنم:

    MainWindow does not name a type

    آیا راه حلی داره؟


  4. با سلام و وقت بخیر. فرض کنید برنامه دکمه ای داره که با کلیک بر روی دکمه یه سری عملیات و در کل پروسه ای انجام میشه. این پروسه اگر در thread انجام بشه ، از هنگ کردن ui برنامه جلوگیری میکنه. پروسه ای که انجام میشه برای نمایش درصد پیشرفتش باید از یک QProgressBar کمک بگیره! پس با این حساب در thread نیاز به آپدیت این Progress Bar هست که باید عرض کنم  time انجام پروسه مشخص نیست . این مشکل به چه نحوی حل خواهد شد؟ با تشکر از اساتید محترم


  5. در ۱ ساعت قبل، فرهاد شیری گفته است :

    دوست عزیز!

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

    در ویژوال سی با MFC 

    در سی شارپ با XAML با کتابخانه WPF 

    در جاوا FXML با کتابخانه JAVAFX 

    در کیوت UI فایل با CSS,HTML ویا QML 

    بنابراین طراحی استایل های لینوکسی در پنجره های ویندوزی تقریبا نشدنی است! مگر با استفاده از طراحی های گرافیکی جداگانه برای پنجره های ویندوزی در زمان نمایش برنامه که البته این روش هم سربار زیادی خواهد داشت

     

    با استفاده از این کلاس می توانید استایل های پنجره ها را از قبل در فایل هایی به فرمت CSS آماده کنید و در زمان اجرا این فایل ها را با این کلاس بارگذاری کنید.

    این نکته را هم عرض کنم همین امکان فوق العاده فریم وورک کیوت (استفاده از CSS) در ویژوال سی آرزوی دست نیافتنی هست! به این علت که در محیط ویژوال سی شما می توانید از قالب های استاندارد ویندوز و تم های استاندارد آفیس برای استایل برنامه استفاده کنید.

    ممنون بابت توضیحاتون ، موفق باشید


  6. در 5 ساعت قبل، فرهاد شیری گفته است :

    من هم موافقم تم های لینوکسی علی الخصوص اینترفیس برنامه ها در دسکتاپ KDE فوق العاده است.

    ولی برای همین دسکتاپ های لینوکسی انقدر کار شده که ویندوز کو بهش برسه!?

    بنابراین با اینکه نحوه بار گذاری پنجره ها در ویندوز در برنامه های کیوت مستقل از کتابخانه هایی مثل MFC مایکروسافت هست ولی بازهم از کلاسهای پایه ویندوز ارث بری خواهند داشت به همین علت شما نمی توانید GUI هایی مانند لینوکس استفاده کنید.

    البته با CSS در کیوت می تونید برنامه هایی با ظاهر بسیار زیبا درست کنید در ویندوز که به مراتب کاربر پسند تر از کلاسهای ویژوال سی مایکروسافت هستند.

    یک نمونه از برنامه های خودم که کلا با استفاده از CSS کار شده والبته ویجت کلاس های کیوت

     

     

     

    bodyPlan.png

    ممنون بابت پاسخ گویی.

    حالا به جز css راه دیگه ای نداره؟ چون میخوام حتی اون فرم پنجره هم به شکل برنامه های لینوکس دربیاد. کلاس QStyle برای چه کاری هست؟


  7. سلامی دوباره خدمت اساتید عزیز. اگر بخواهیم در Qt Widget برنامه ای در ویندوز کامپایل کنیم ولی استایل برنامه شبیه به استایل برنامه های لینوکس باشد باید به چه روشی عمل کرد؟ آیا امکان پذیر است؟ 

    با تشکر


  8. در 4 ساعت قبل، فرهاد شیری گفته است :

      Typedef qint64 : نوع int را که یک عدد صحیح 4 بایتی با long long افزایش میده به یک داده 64 بیتی که در سیستم عامل های 64 بیتی که توسط کیوت پشتیبانی میشه تعریف میکنه.!

    و اینکه چه مواردی را پشتیبانی میکنه بستگی به کاربرد شماداره!

    یکی از کاربرد های مهم پر استفاده تبدیل یک بایت رشته ای به یک نوع داده ای عدد صحیح اصلاح شده از نوع qint64 هست.

    
    inline qint64 GetInteger64(QLineEdit* lineEdit){
    
    qint64 nValue = 0;
    bool ok;
     
    nValue = lineEdit->text().toLongLong(&ok,10);
    
    return nValue;
     
    }

      اگر بخواهید اعداد صحیح 64 بیتی امضا شده را به صورت مستقل از پلت فرم هم قرار بدید می تونید از ماکرو زیر هم استفاده کنید

    
    qint64 value = Q_INT64_C(932838457459459);

     

    بسیار مختصر و مفید. خیلی تشکر از شما


  9. مثلا برنامه دارای  ویجت های  progressbar ، button و یه textEdit باشه که با کلیک بر روی button یه سری نوشته (با تایم چند ثانیه پشت سرهم) بر روی textEdit دنبال هم نمایش داده بشه و در حین حال progressbar درصد پیشرفت کار رو نمایش بده


  10. آقای صباغی من چندین جزوه از تو گوگل دانلود کردم ولی ظاهرا سرفصل های متفاوتی دارند. آیا امکانش هست بگید دقیقا کدوم جزوه مد نظرتونه؟ اگه موجود داشته باشین چه خوب آپلود کنید استفاده کنیم. ممنون


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

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

    به چه نحوی باید ساختار برنامه تعیین شود؟ آیا از کل به جز باید عمل کرد یا بالکعس؟! پیاده سازی پروژه باید به چه شکلی باشد ؟! آیا نحوه پیاده سازی با نگه داری (جهت توسعه در آینده ) رابطه تنگاتنگ دارد؟ آیا واقعا هزینه نگه داری برای توسعه یک پروژه از ساخت پروژه بیشتر هزینه خواهد برد؟

     

    ممنون خواهم شد اگر کامل و جامع راهنمایی کنید.


  12. تابع finditems دارای چند پارامتر ورودی است که یکی از پارامتر ها String است. با این اوصاف اگر یک لیست مدل داشته باشیم که با استفاده از کلاس qstandarditemmodel ساخته شده باشد پس توسط تابع finditems میشود یک آیتم را در بین آیتم های این لیست پیدا کرد.

    برای مثال یک لیست در نظر بگیرید و یک textfield که از textfield برای جستجو استفاده میشود. به این شکل که وقتی در textfield یک عبارتی تایپ شود ( onTextChanged) تابع finditems صدا زده بشه و اگر عبارت تایپ شده با یکی از آیتم های لیست همخوانی داشت ، لیست ما تغییر کنه و فقط آیتم مورد نظر نمایش داده بشود.

     

    مشکل من پارامتر های ورودی تابع finditems است که دو مورد از پارامتر ها رو نتونستم پیاده سازی کنم . بدلیل اینکه در مستندات کیوت توضیحی درباره ش نداده است.

     

    در ادامه دو پروژه به صورت فایل پیوست شده موجود است که میتوانید بررسی کنید. هردو پروژه شامل لیستی از آیتم ها و textfield است که در یکی از پروژه ها با تایپ عبارت در textfield لیست تغییر میکند ولی در پروژه ی دیگری همچین قابلیتی وجود ندارد چون از دو کلاس متفاوت ساخته شده است. مشکل من برمیگرده به نوع این کلاس ها که مجبور شدم از کلاسی استفاده کنم که بشه برای هر آیتم یا بهتره بگم هر listelement چند مورد تعریف کرد. مثلا موضوع ، خلاصه ای از موضوع و یک آدرس برای نمایش عکس.

     

    پروژه اول

    پروژه دوم 

     

    دو عکس زیر بیانگر کامل تفاوت این دو لیست است.

    عکس اول

    عکس دوم


  13. درود

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

     

    با تشکر

×
×
  • جدید...