Ho un QStackedWidget
che contiene diverse pagine piene di vari QLineEdit
e QComboBox
bambini. Voglio emettere un segnale ogni volta che lo QStackedWidget
non ha più qualsiasi bambino con lo stato attivo (dato che all'inizio era attivo un bambino). Quindi passare da bambino a bambino non emetterà un segnale, ma una volta selezionato un widget al di fuori dello QStackedWidget
, viene emesso un segnale. Qualche consiglio su come implementarlo? Ho guardato allo InstallEventFilter
e allo QSignalMapper
, ma nessuno di questi sembra corrispondere alle mie esigenze. Tutto il consiglio sarebbe apprezzato.Emettere segnale se tutti i widget figli perdono fuoco
risposta
Questo è un po 'complicato. Anche quando si pedala da un bambino all'altro, c'è un breve periodo dopo che un bambino perde il focus e prima che un altro bambino ottenga lo stato attivo in cui nessun bambino del widget impilato ha il focus. Sebbene questo stato sia estremamente breve, è un dato di fatto.
L'unica opzione che posso vedere è quello di decidere per quanto tempo un periodo compreso tra un focus widget figlio perdere e nessun widget figlio guadagnando attenzione che ci si consideri abbastanza a lungo per dichiarare che in effetti, nessun widget figlio è attivo più. Questo sarebbe un meccanismo simile a quello che viene utilizzato per distinguere due clic del mouse singolo da un doppio clic.
Questo potrebbe essere ottenuto utilizzando un timer e un filtro eventi nel genitore registrato con ogni bambino, che cerca gli eventi di messa a fuoco e di uscita. Impostare il timer per un intervallo (100 ms?) E avviarlo ogni volta che viene ricevuto un evento di messa a fuoco. Se ricevi un focus nell'evento mentre il timer è ancora in esecuzione, interrompi il timer. Se il timer è completo, puoi attivare un tuo segnale per indicare che nessun widget figlio ha il focus.
È possibile connettersi al segnale QApplication :: focusChanged per valutare i widget di messa a fuoco in uno slot corrispondente. Pulita modo per farlo è derivare da QStackedWidget:
class StackedFocusWidget : public QStackedWidget {
Q_OBJECT
public:
StackedFocusWidget(QWidget *parent = 0) : QStackedWidget(parent) {
connect(qApp, SIGNAL(focusChanged(QWidget *, QWidget *)), this, SLOT(onFocusChanged(QWidget *, QWidget *)));
}
private slots:
void onFocusChanged(QWidget *old, QWidget *now) {
bool focusOld = old != 0 && isAncestorOf(old);
bool focusNow = now != 0 && isAncestorOf(now);
if (!focusOld && focusNow) {
emit gotFocus();
} else if (focusOld && !focusNow) {
emit lostFocus();
}
}
signals:
void gotFocus();
void lostFocus();
};
I segnali StackedFocusWidget :: Attivato e StackedFocusWidget :: LOSTFOCUS vengono emessi ogni volta che il widget di impilati o qualsiasi suo bambino viene attivato o.
- 1. Impossibile emettere segnale in Android
- 2. Impedisci l'interruzione di LostFocus quando gli elementi figli perdono la messa a fuoco
- 3. Come trovare tutti i processi figli?
- 4. Qt forza QCheckBox per emettere il segnale su setChecked
- 5. Come si ottengono i figli di un widget in Qt?
- 6. Spy ++ e Windows chiusi quando perdono la messa a fuoco
- 7. Utilizzo del contenimento del controller di visualizzazione, i figli perdono il genitore
- 8. bash per emettere un segnale acustico se il comando richiede più di 1 minuto per terminare
- 9. Selezionare una proprietà genitore e tutti i figli utilizzando linq
- 10. Come posso emettere un segnale da un'altra classe?
- 11. Ottenere tutti i figli della collezione con has_many relationship
- 12. jQuery ottiene l'elemento successivo e tutti i relativi figli
- 13. ActiveRecord trova tutti i genitori che hanno figli associati
- 14. Come posso emettere un segnale acustico al termine della compilazione?
- 15. Come si elencano tutti i processi figli in python?
- 16. Come tutti i figli di un genitore utilizzando Query MSSQL
- 17. jQuery: Come seleziono tutti i figli P di mio padre?
- 18. Come selezionare tutti i root o tutti i nodi figli in VirtualStringTree?
- 19. pyqt: riceve il segnale quando il widget diventa visibile/nascosto
- 20. Passare in rassegna tutti i "widget"/elementi in un'attività
- 21. I postback ASP.NET perdono l'hash nell'URL
- 22. Qual è il segnale per quando un widget perde lo stato attivo?
- 23. ottiene tutti i widget all'interno di un elemento
- 24. Come stile un widget Qt e non i suoi figli con fogli di stile?
- 25. Il segnale "distrutto" del widget non viene attivato (PyQT)
- 26. Eclipse Juno - come ridurre al minimo le visualizzazioni quando perdono la messa a fuoco?
- 27. Cancellare l'elemento xdt se non ha figli
- 28. Come analizzare i nodi figli?
- 29. Rendering UIView con i relativi figli
- 30. Controllare se Element ha figli o non
Questo ha funzionato perfettamente, grazie! – Jmbryan10