sd.CSharpProgrammer
دوشنبه 15 اسفند 1390, 10:00 صبح
سلام دوستان
یه برنامه دارم که قاب دورش رو با فلگ FramelessWindowHint حذف کردم و یک نوار عنوان سفارشی روش گذاشتم. برای حرکت پنجره با دراگ ماوس از کدهای مثال shapedClock کیوت استفاده کردم.
ولی میخوام پنجره فقط وقتی حرکت کنه که در محدوده نوارعنوان دراگ میکنه در حالی که تو اون مثال هرجای پنجره دراگ بشه عملیات حرکت پنجره شروع میشه!! حالا این مشکل رو با انجام یکسری تغییرات اِعمال کردم :
void Widget::mousePressEvent(QMouseEvent *event)
{
if (event->pos().y() < 30) {
if (event->buttons() & Qt::LeftButton) {
dragPosition = event->globalPos() - frameGeometry().topLeft();
event->accept();
}
}
}
حالا مشکل اصلی چیه؟! اینکه وقتی ماوس تو خارج از نوارعنوان دراگ میکنه حرکت باز انجام میشه و ماوس میره اون بالا تو ناحیه نوارعنوان!!!
برنامه مثال رو اینجا میگذارم خودتون اجرا کنین مشکل رو ببینید.
ممنون میشم کمک کنید.
83700837018370183701
یه برنامه دارم که قاب دورش رو با فلگ FramelessWindowHint حذف کردم و یک نوار عنوان سفارشی روش گذاشتم. برای حرکت پنجره با دراگ ماوس از کدهای مثال shapedClock کیوت استفاده کردم.
ولی میخوام پنجره فقط وقتی حرکت کنه که در محدوده نوارعنوان دراگ میکنه در حالی که تو اون مثال هرجای پنجره دراگ بشه عملیات حرکت پنجره شروع میشه!! حالا این مشکل رو با انجام یکسری تغییرات اِعمال کردم :
void Widget::mousePressEvent(QMouseEvent *event)
{
if (event->pos().y() < 30) {
if (event->buttons() & Qt::LeftButton) {
dragPosition = event->globalPos() - frameGeometry().topLeft();
event->accept();
}
}
}
حالا مشکل اصلی چیه؟! اینکه وقتی ماوس تو خارج از نوارعنوان دراگ میکنه حرکت باز انجام میشه و ماوس میره اون بالا تو ناحیه نوارعنوان!!!
برنامه مثال رو اینجا میگذارم خودتون اجرا کنین مشکل رو ببینید.
ممنون میشم کمک کنید.
83700837018370183701