PDA

View Full Version : مبتدی: موس در Qt



raaaaz
یک شنبه 10 بهمن 1389, 17:33 عصر
میخواهم وقتی موس روی مربعی حرکت میکند آن مربع تبدیل به دایره شود اما هر کدی نوشتم نشد...................اگر ممکن است مرا راهنمایی کنید تا بتوانم این بازی را بنویسم

silverfox
دوشنبه 11 بهمن 1389, 00:04 صبح
مثلا شما با QCursor::pos() مکان ماوس رو داری بعد چک می کنی اگه این مختصات توی مربع شما هست این دفعه موقع کشیدنش دایره بکشه این می تونه یه جایی مشخص بشه و موقع کشیدن چک بشه که دایره بکشه یا مربع
چون نگفتی کجاش رو توضیح بدم اینطوری گفتم اگه جای خاصیش رو لازم می دونی که بگم یا کد قرار بدم بگو...

.:saeed:.
دوشنبه 11 بهمن 1389, 07:41 صبح
سلام
اگه میخوای حرفه ای به موضوع نگاه کنی و چون گفتی میخوای بازی طراحی کنی ( البته دوبعدی ) علاوه بر کاری که دوستمون گفت میتونی از Qt Graphics View Framework استفاده کنی. که برای کارهای گرافیکی دوبعدی در کیوتی در نظر گرفته شده ( یا از QML استفاده کنی ) . یه آموزش مختصر توی این فروم دربارش گذاشتم . شما اون کارایی که اونجا گفته شده رو انجام میدین.بعدش از QGraphicsItem ارث ببری و mouseMoveEvent اونو reimplement کنی و در این حالت دیگه نیازی به چک کردن اینکه حالا داخل مستطیل هستی یا نه نیست . بعدش شکل دلخواهتو میکشی. اگه خواستی بگو بیشتر توضیح بدم
موفق باشید

raaaaz
دوشنبه 11 بهمن 1389, 12:56 عصر
ممنون من ازکلاس Qwidget استفاده میکنم...تو صفحم پر توپ رنگی میخام رو هر توپی کلیک میکنم حذف شه.....اینم کدم برای اینکه حذف شن اما نمیشن:



bool eventFilter(QObject *sender, QEvent *e) { if (e->type()==QEvent::MouseMove) { mouseMoveEvent((QMouseEvent *)e); return true; } else return QObject::eventFilter(sender,e); }void reemove(int a){ g.bub.removeAt(a);}bool rectcolison(QRect a,QRect b){ return a.contains(b.topLeft())||a.contains(b.topRight())| | a.contains(b.bottomLeft())||a.contains(b.bottomRig ht());} void mousepress(QMouseEvent *e) { if(e->button()==Qt::LeftButton) { static int z=0; static QPoint f( e->pos().x(),e->pos().y()); shsh[z].shr.setRect(f.x(),f.y(),10,10); z++; for(register int k=0;k<g.bub.count();k++) { if(rectcolison(g.bub[k].b,shsh->shr)) reemove (k); } } }

silverfox
دوشنبه 11 بهمن 1389, 13:56 عصر
هه هه به نظر میاد هم دانشگاهی باشیم اگه پروژتونه...(اگر نه اشتباه شده عذر می خوام :دی)
این رو اینطوری که نمیشه خوند تو تگ کد می ذاشتین مرتب بشه...مشکل کجاس با QDebug چک کنید ببینید مختصات درسته یا collison درسته ببینید مشکل از کجاشه...