【发布时间】:2016-03-15 14:53:03
【问题描述】:
我想将我的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的另一个调用。但是我刚刚测试了这段代码,它对我来说很好用! -
谢谢,我试过
move
标签: qt qmainwindow