问题描述
我正在使用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将焦点保持在主窗口上。