点击独立QWidget时如何避免将QMainWindow带到最前面

How to avoid bringing QMainWindow to the front when clicking on independent QWidget

我正在开发 Qt 应用程序。我有 QMainWindow 和 QWidget,它们独立显示并且不在 window.

我想实现的是,如果我单击该 QWidget,window 不会出现在最前面。也就是说,如果它在另一个应用程序后面,它应该保持这样。

我已经创建了测试应用程序:

main.cpp

int main(int argc, char *argv[])
{
   QApplication app(argc, argv);
   MainWindow w;
   w.show();
   Widget mywidget;
   return app.exec();
}

Widget.cpp
namespace
{
 Qt::WindowFlags defaultWindowFlags()
 {
  Qt::WindowFlags f = 0;

  f |= Qt::X11BypassWindowManagerHint;
  f |= Qt::FramelessWindowHint;
  f |= Qt::WindowStaysOnTopHint;
  f |= Qt::CustomizeWindowHint;
  f |= Qt::WindowDoesNotAcceptFocus;  
  f |= Qt::Window;
 return f;
 }
}

Widget::Widget(QWidget *parent) : QWidget(parent, defaultWindowFlags())
{
 setFixedSize(100,100);
 setStyleSheet("background-color:blue;");
 move(56,89);
 setVisible(true);
}

省略行 f |= Qt::WindowDoesNotAcceptFocus;,这使得 Qt 将焦点保持在主要 window。