Я хочу, чтобы мой QMainWindow
всегда оставался внутри рабочего стола, поэтому я добавляю реализацию для QMainWindow::moveEvent
:
void MainWindow::moveEvent(QMoveEvent *ev)
{
if(ev->pos().x() < 0) setGeometry(0, ev->oldPos().y(), width(), height());
}
Но когда я перемещаю окно за пределы рабочего стола по левой границе, приложение аварийно завершает работу.
Что не так с этим кодом? Почему он разбился? Правильно ли мое решение?
//--Обновление: пробовал так:
int newx = ev->pos().x(),
newy = ev->pos().y();
if(ev->pos().x() < 0) newx = 0;
if(ev->pos().y() < 0) newy = 0;
move(newx, newy);
Он работал без сбоев, но я не доволен, потому что движение не плавное.
setGeometry
вызовет другой вызовmoveEvent
. Однако я только что протестировал этот код, и он отлично сработал для меня! - person ajshort   schedule 10.12.2015move
- person aviit   schedule 10.12.2015