Pregunta

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

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

¿Fue útil?

Solución

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

Esto obliga a la ventana de no activar. Incluso con la bandera Qt::WindowStaysOnTopHint

Otros consejos

Si desea realizar cuadro de vista previa flotante / cualquier otro control sólo tiene que utilizar 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 indicador importante para hacer que funcione. Me refiero a no robar el foco.

Reproductores no aceptan el enfoque por defecto pero se supone que no se ha creado un widget sencillo? ¿Qué subclase era? QMainWindow o algo más?

Es posible que el defecto subclases de ventanas para aceptar el foco a fin de tratar de forma explícita llamando QWidget :: setFocusPolicy con Qt :: NoFocus antes de llamar QWidget :: show ().

Además, asegúrese de que no está llamando QWidget :: activateWindow () en la ventana o cualquiera de sus widgets en cualquier punto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top