Vorrei evidenziare un QFrame, se uno dei suoi widget bambino è messa a fuoco (così gli utenti sanno dove cercare il cursore ;-)Come modificare lo sfondo di un widget genitore quando è attivo un widget figlio?
usando qualcosa insieme
ui->frame->setFocusPolicy(Qt::StrongFocus);
ui->frame->setStyleSheet("QFrame:focus {background-color: #FFFFCC;}");
evidenzia QFrame quando clicco su di esso, ma perde il suo focus quando viene selezionato uno dei suoi widget figli.
possibili approcci:
potevo
connect()
QApplication::focusChanged(old,now)
e verificare ogni nuovo oggetto se si tratta di un bambino della mia QFrame, ma questo diventa disordinato.Potrei anche sottoclasse di ciascun widget bambino e reimplementare
focusInEvent()
/focusOutEvent()
e reagire su quello, ma con un sacco di diversi widget, questo è anche un sacco di lavoro.
Esiste una soluzione più elegante?
Archie, grazie per la risposta. Puoi darmi un puntatore su come estendere QFrame per questo scopo? – Elwood
Perfetto. Mi è particolarmente piaciuta l'idea di 'hookChildrenWidgetsFocus()'. (Ma ho un po 'di cattiva coscienza perché ho portato via l'accettazione da Fred, che ha avuto un approccio simile prima. Grazie mille!) – Elwood