繁体   English   中英

QT总是在Windows7 / 8上排在最前面

[英]QT always on top on windows7/8

我想知道是否可以将QMainWindow设置为最佳状态。

我试过了:

mainWindow.setWindowFlags(Qt::WindowStaysOnBottomHint);

mainWindow是一个QMainWindow扩展对象。 但它不起作用,我的窗口消失了。

是的,这是可能的,但代码中有两个错误:

  1. 您正在清除所有标志,但设置了Qt::WindowStaysOnBottomHint
  2. 您正在使用Qt::WindowStaysOnBottomHint标志(代表您想要的相反)而不是Qt::WindowStaysOnTopHint

这样做的正确方法是:

Qt::WindowFlags flags = mainWindow.windowFlags();
mainWindow.setWindowFlags(flags | Qt::WindowStaysOnTopHint);

请注意,在X11上的某些窗口管理器上,您还必须传递Qt :: X11BypassWindowManagerHint才能使此标志正常工作。

在这种情况下,你应该这样做:

Qt::WindowFlags flags = mainWindow.windowFlags();
mainWindow.setWindowFlags(flags | Qt::X11BypassWindowManagerHint | Qt::WindowStaysOnTopHint);

如果你想把一个窗口作为Dialog,还有另一种方法。 只需调用setModal(true)或setWindowModality(),然后调用show()。 与exec()不同,show()会立即将控制权返回给调用者。它不会在exec()中作为QDialog而卡住。

setModel(true);//In Constructor

然后在调用或调用新窗口时,

MyWindow* myWindow = new MyWindow(this);
myWindow->show();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM