Linux Qt4:窗口出现在metacity的左上角

Linux Qt4:窗口出现在metacity的左上角,linux,qt4,metacity,Linux,Qt4,Metacity,我对Metacity上qt4的窗口外观有问题。最初的问题是该窗口出现在另一个窗口下,通过单击按钮从中调用该窗口。我在Compiz上通过发送“网络活动”窗口解决了这个问题,但在metacity上它仍然不起作用。在谷歌搜索了几个小时后,我尝试了以下方法: if (window -> isMinimized()) { window -> showNormal(); } else if (window -> isHidden()) { window -> show();

我对Metacity上qt4的窗口外观有问题。最初的问题是该窗口出现在另一个窗口下,通过单击按钮从中调用该窗口。我在Compiz上通过发送“网络活动”窗口解决了这个问题,但在metacity上它仍然不起作用。在谷歌搜索了几个小时后,我尝试了以下方法:

if (window -> isMinimized())
{
  window -> showNormal();
}
else if (window -> isHidden())
{
  window -> show();
}

//the code that I added, which makes the window appear above.

window ->setWindowFlags(Qt::WindowStaysOnTopHint);
Qt::WindowFlags flags = window->windowFlags();
flags &= ~Qt::WindowStaysOnTopHint;
window->setWindowFlags(flags);

window->setGeometry(window->geometry());

window -> activateWindow();
window->show();
window -> raise();
这只是一种变通方法,但它实际上使窗口显示在上面。这就是另一个问题发生的地方:如果窗口被显示,我将焦点从调用它的窗口切换到调用它的窗口并按下按钮,我的窗口就会出现在它应该出现的位置。但是如果我关闭窗口并再次调用它,它会出现在左上角。 有人知道为什么会这样吗?
提前谢谢。

我猜您的桌面环境保存了窗口的最后一个位置,或者默认情况下,他们会将其放在该位置。这是您的项目的功能,还是您希望将其放在屏幕中央?谢谢您的回复。最后一个位置应该是收盘前的位置,而不是拐角处。我捕获了一个额外的移动事件,它不是从我的应用程序中发送的,我猜是wm发送的。所以它应该在中心,但这次搬家事件把一切都搞砸了。