我想要在窗口最大化时,触发还原窗口的事件,与此同时移动窗口位置,但调用showNormal后立刻调用move函数就会失效。测试过dx和mg的取值都是正常的。无论move移动多少都是失效的,所以怎么样才能让我的窗口在还原时能够立即移动?
const auto& msEvt = static_cast<QMouseEvent*>(event);
if (isMaximized())
{
if ((msEvt->globalPos() - mMousePressed).manhattanLength() > 5)
{
showNormal();
const auto& mg = layout()->contentsMargins();
const int& dx = msEvt->globalX() * (1.0 - double(geometry().width()) / mOldGeometry.width());
move(dx - mg.left(), msEvt->globalY() - msEvt->y() - mg.top());
}
}
else
{
move(mOldGeometry.x() + msEvt->globalPos().x() - mMousePressed.x(),
mOldGeometry.y() + msEvt->globalPos().y() - mMousePressed.y());
}