我正在开发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将焦点保持在主窗口。