سلام
من یک Widget ساختم که رویداد paintEvent اون یک جدول رسم میکنه. میخوام هروقت ماوس روی هرکدوم از سلول های جدول رفت اون سلول به نوعی Highlight بشه.
برای اینکه تشخیص بدم نقطه ای که ماوس هست روی سلول چندم قرار میگیره مشکلی ندارم و با یک تقسیم ساده انجامش دادم.
اما مهم ترسیم اون Highlight هست! اولین بار در رویداد paintEvent بعد از کد ترسیم جدول کدی نوشتم که بر اساس مختصات ماوس یک مستطیل روی اون محدوده ترسیم کنه و رویداد mouseMoveEvent هم update رو انجام میداد و کاملا هم درست کار میکرد اما متوجه شدم که زمانی که ماوس رو روی جدول حرکت میدم کارکرد CPU به بیش از 50 درصد میرسه! که این بدلیل update شدن ویجت در هر حرکت ماوس هست! پس روش درستی نیست.
دنبال راهی برای داشتن یک مستطیل بودم که با استفاده از دستور move قابلیت جابجایی داشته باشه. پس یک ویجت نوشتم که یک مستطیل در خودش رسم میکنه و اون رو در ویجت جدول قرار دادم و کد move رو نوشتم.
اما باز هم یک مشکل وجود داره! من برای حرکت دادن ویجت مستطیل به رویداد mouseMoveEvent ویجت جدول نیاز دارم و وقتی مستطیل روی جدول هست رویداد ماوس به ویجت جلوتر یعنی مستطیل ارسال میشه!
چطوره از eventFilter برای انتقال رویداد از مستطیل به جدول استفاده کنم؟ البته اگر این تنها راهه؟
نمیشه کاری کرد که ویجت مستطیل تاثیری در دریافت رویداد نداشته باشه؟
↧