Ci sono alcune domande su SO in merito a ciò, che sembrano dire che l'unico modo per rimuovere il bordo punteggiato è to set the focusPolicy on widget/item in question to NoFocus. Anche se questo funziona come una soluzione temporanea, questo impedisce ulteriori interazioni con il widget/oggetto nel regno di altri focusEvents necessari.Rimozione del bordo punteggiato senza impostazione NoFocus in Windows PyQt
Detto frontiera in questione:
Ecco un esempio del perché questo non funziona.
- Ho un popup di widget non modali, penso a una lightbox per un'immagine.
- Voglio rilevare un mousePressEvent al di fuori del widget e chiudere il widget come risultato. Per fare questo, dovrei catch the focusOutEvent.
- Tuttavia, se una vasta maggioranza di widget nel mio programma sono impostati come NoFocus (per rimuovere il problema del bordo), non riesco a prendere il focusOutEvent perché, avete indovinato, non hanno alcuna politica di messa a fuoco.
Ecco un altro esempio:
- Ho un QTreeWidget che è una sottoclasse in modo da poter prendere keyPressEvents per vari motivi.
- QTreeWidget viene impostato anche come NoFocus per impedire il bordo. Per questo motivo, tuttavia, il widget non ha mai il focus e quindi non è possibile catturare keyPressEvents.
- Una soluzione per questo (kludgy, imo) è a use the widget's grabKeyboard class, che è pericoloso se mi dimentico di rilasciareKeyboard in seguito. Questo non è ottimale.
Quindi la domanda è, c'è un modo per rimuovere questo bordo punteggiato strano (per lo più solo brutto) senza disattivare l'attenzione per tutto nella mia app? Grazie in anticipo!
Quale sistema operativo utilizzate? – jdi
Windows (7), ho paura. – Cryptite
Bene, potreste essere interessati a un paintEvent personalizzato: -/ – jdi