显示在Qt的窗口,而不偷焦点
-
12-09-2019 - |
题
我使用Qt库,当用户不使用该第二显示器显示所述第二监视器上的幻灯片。一个例子是用户在玩游戏中的第一监视器和显示在第二显示器幻灯片放映。
的问题是,当我打开在Qt的一个新的窗口,它会自动窃取从先前应用的焦点。有什么办法来防止这种情况的发生?
解决方案
我花了一段时间来找到它,但我发现它:setAttribute(Qt::WA_ShowWithoutActivating);
这迫使窗口不激活。甚至与Qt::WindowStaysOnTopHint
标志
其他提示
如果你想浮动预览框/任何其他部件只要使用以下
thumbnail = new QLabel;
thumbnail->setAttribute(Qt::WA_ShowWithoutActivating);
thumbnail->setParent(0);
thumbnail->setWindowFlags(Qt::Tool | Qt::FramelessWindowHint|Qt::WindowStaysOnTopHint);
的Qt ::工具是使其发挥作用的重要标志。我的意思是不偷焦点。
小工具默认情况下不接受焦点,但想必你还没有创建一个简单的小工具?其子类是什么呢? QMainWindow的还是其他什么东西?
这是可能的窗口子类默认为接受专注所以尽量明确地调用QWidget :: setFocusPolicy使用Qt :: NoFocus QWidget的::显示()。
在调用此外,还要确保你没有调用QWidget :: activateWindow()在任何点窗口或任何其部件上。
不隶属于 StackOverflow