PDA

View Full Version : سوال: پیاده سازی FocusIn و FocusOut



sd.CSharpProgrammer
دوشنبه 29 خرداد 1391, 20:55 عصر
سلام دوستان

من میخوام یه LineEdit داشته باشم که بصورت پیشفرض متن "فیلتر جستجو..." توشه. وقتی فوکوس به کنترل منتقل میشه متن پاک بشه و وقتی فوکوس خارج بشه متن دوباره نوشته بشه. برای اینکار کلاس QLineEdit رو دوباره پیاده سازی کردم و رویدادهای focusIn و focusOut رو تعریف کردم. ولی کار نمیکنه، اصلاً انگار نه انگار!!!!!!!!!! مثالهای زیادی هم تو اینترنت دیدم ولی هیچکدوم کار نکرد!! نمیدونم چیکار کنم!

حتی بعضی گفته بودن که باید خط زیر رو به رویدادها اضافه کرد :


QLineEdit::focusInEvent(e);


ولی اینم کار نکرد. من چیکار کنم؟! چطوری میشه ورود و خروج کرسر رو به کنترل در دست گرفت؟! :ناراحت:

حامد مصافی
دوشنبه 29 خرداد 1391, 21:14 عصر
شما باید یک کلاس بسازید که از QLineEdit ارث‌بری داشته باشه. سپس در این کلاس متد مجازی focusInEvent رو که از QWidget بهش به ارث رسیده رو تعریف مجدد کنید. در این متد شما می‌تونید یک سیگنال دلخواه رو emit کنید.

alamate_aoal
سه شنبه 30 خرداد 1391, 00:07 صبح
سلام

یرای این کاری که مد نظر شماست نیازی به ارث بری نیست , فقط کافیه از متد setPlaceholderText استفاده کنید!

lineEdit->setPlaceholderText(trUtf8("...فیلتر جستجو"));

sd.CSharpProgrammer
سه شنبه 30 خرداد 1391, 11:48 صبح
ممنون دوستان
متد setPlaceholderText دقیقاً همون کاری رو که میخواستم انجام میده.
البته من روش آقای حامد مصافی رو هم امتحان کرده بودم حتی تو پست اول در موردش توضیح دادم ولی نتیجه نداد.

در هر حال مرسی دوستان از راهنمائی ها

alamate_aoal
چهارشنبه 31 خرداد 1391, 01:49 صبح
اون کاری که آقای مصافی فرمودن شدنی هست: