单击独立的QWidget时如何避免将QMainWindow置于最前面

问题描述

我正在使用Qt应用程序。我有QMainWindow和QWidget,它们独立显示在窗口外。

我想实现这一点,如果我单击该QWidget,则该窗口不会位于最前面。也就是说,如果它在另一个应用程序后面,则应保持这种状态。

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

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将焦点保持在主窗口上。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...