在Qt中显示窗口而不会窃取焦点

dut*_*ega 36 c++ qt focus window-management active-window

当用户没有使用第二台显示器时,我正在使用Qt库在第二台显示器上显示幻灯片.一个例子是用户在第一个监视器中玩游戏并在第二个监视器中显示幻灯片.

问题是,当我在Qt中打开一个新窗口时,它会自动窃取前一个应用程序的焦点.有没有办法防止这种情况发生?

dut*_*ega 63

我花了一段时间才找到它,但我找到了它: setAttribute(Qt::WA_ShowWithoutActivating);

这会强制窗口不激活.即使有Qt::WindowStaysOnTopHint旗帜

  • 你是我的英雄.我一直在尝试实现我自己的透明工具提示小部件,似乎在Windows上Qt :: Tooltip窗口标志意味着你不能有一个透明的工具提示......现在我可以说setAttribute(Qt :: WA_TranslucentBackground) ); 的setAttribute(Qt的:: WA_ShowWithoutActivating); setWindowFlags(Qt :: FramelessWindowHint | Qt :: WindowStaysOnTopHint | Qt :: WindowTransparentForInput | Qt :: WindowDoesNotAcceptFocus); ! (3认同)

Yas*_*ash 6

如果要制作浮动预览框/任何其他小部件,请在下面使用

thumbnail = new QLabel;
thumbnail->setAttribute(Qt::WA_ShowWithoutActivating);
thumbnail->setParent(0);
thumbnail->setWindowFlags(Qt::Tool | Qt::FramelessWindowHint|Qt::WindowStaysOnTopHint);
Run Code Online (Sandbox Code Playgroud)

Qt :: Tool是使其工作的重要标志。我的意思是不偷重点。