que español creator c++ qt focus window-management active-window

c++ - que - qt creator español



Mostrar ventana en Qt sin robar el foco (3)

Estoy usando la biblioteca de Qt para mostrar una presentación de diapositivas en el segundo monitor cuando el usuario no está usando el segundo monitor. Un ejemplo es el usuario que juega un juego en el primer monitor y muestra la presentación de diapositivas en el segundo monitor.

El problema es que cuando abro una nueva ventana en Qt, automáticamente roba el foco de la aplicación anterior. ¿Hay alguna manera de evitar que esto suceda?


Los widgets no aceptan el enfoque por defecto, pero es de suponer que no ha creado un widget simple. ¿Qué subclase era? QMainWindow o algo más?

Es posible que las subclases de la ventana asignen el foco por defecto, así que intente llamar explícitamente a QWidget :: setFocusPolicy con Qt :: NoFocus antes de llamar a QWidget :: show ().

Además, asegúrese de no llamar a QWidget :: activateWindow () en la ventana ni a ninguno de sus widgets en ningún momento.


Si desea hacer un cuadro de previsualización flotante / cualquier otro widget, simplemente use a continuación

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

Qt :: Tool es una bandera importante para que funcione. Me refiero a no robar el foco.


Me tomó un tiempo encontrarlo, pero lo encontré: setAttribute(Qt::WA_ShowWithoutActivating);

Esto fuerza a la ventana a no activarse. Incluso con el indicador Qt::WindowStaysOnTopHint