点击独立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。
我正在开发 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。