Red de conocimiento informático - Conocimiento informático - Cómo ocultar el icono de tarea de la ventana QT en la barra de tareas

Cómo ocultar el icono de tarea de la ventana QT en la barra de tareas

Muchos programas que se utilizan hoy en día necesitan básicamente implementar estas funciones.

1. Para ventanas transparentes sin bordes, de hecho, dos configuraciones son suficientes.

setAttribute(Qt::WA_TranslucentBackground);

setWindowFlags( Qt::FramelessWindowHint );;

En este momento puedes ocultar la ventana QT en la barra de tareas.

Entonces no podrá responder al arrastre del mouse después de esto, por lo que debe recargar la función de procesamiento de tiempo para realizar el tiempo de arrastre después de presionar el mouse. De hecho, se basa en el tiempo de arrastre. evento de movimiento del mouse. Determine si el botón está presionado y luego mueva todo el control durante un tiempo prolongado de esta manera. Por supuesto, si desea implementar esta función en varias ventanas o cree que no es bueno escribir una clase de ventana en el programa para sobrecargar estas funciones. Luego puede crear su propio QOBJECT y luego usar este objeto para manejar eventos de ventana. Por ejemplo, si su ventana Win necesita implementar esta función, entonces llame a

win->installEventFilter(this); Esto se refiere a su propia clase qobject recién creada para manejar el tiempo de arrastre, y luego puede registrarse. ganancia múltiple para este obj. Después del registro, los eventos de la ventana pasarán por este obj. Después del registro, los eventos de la ventana pasarán a través de este obj. Puede obtener la información del movimiento del mouse a través de eventFilter (QObject* obj, QEvent* event) aquí, o puede determinar el objeto que se obtendrá y luego implementar la función deseada. . De hecho, el efecto de usar la función installEventFilter es solo el efecto del registro del evento, y luego hay un punto más importante: cuando installEventFilter registra la ventana, la prioridad de activación del evento es mayor cuanto más tarde se registre, por lo que si la clase se registró más tarde es Después del procesamiento en eventFilter, si se devuelve verdadero en el eventFilter de la clase registrada más tarde, el mensaje no continuará y la clase posterior (clase previamente registrada) no recibirá el mensaje. Es importante tener esto en cuenta y puede ajustar el orden de registro según sea necesario. La desinstalación correspondiente es la función removeEventFilter.

2. Luego hablemos de la bandeja.

La bandeja en realidad se implementa usando la clase QSystemTrayIcon.