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

时间:2014-08-21 16:42:05

标签: c++ windows qt window

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

我试过了:

mainWindow.setWindowFlags(Qt::WindowStaysOnBottomHint);

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

2 个答案:

答案 0 :(得分:3)

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

  1. 您正在清除所有标记,但Qt::WindowStaysOnBottomHint已设置。
  2. 您正在使用Qt::WindowStaysOnBottomHint标记(代表您想要的内容),而不是Qt::WindowStaysOnTopHint
  3. 这样做的正确方法是:

    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);
    

答案 1 :(得分:0)

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

location ~ /apple/([^/]+)/? {
  fastcgi_param SCRIPT_FILENAME $document_root/index.php;
  fastcgi_param REQUEST_URI     /index.php?pagename=apple&apple=$1;
  fastcgi_pass ...;
  ...
}

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

setModel(true);//In Constructor