Ich habe mehrere QComboboxes teilen das gleiche Modell. Normalerweise können sie Elemente in diesem Modell unabhängig voneinander auswählen. In einigen Fällen möchte ich diese Comboboxen zwingen, die gleiche Modellreihe zu zeigen, d. H., Wenn man eine Auswahl ändert, sollte diese über die anderen Kombinationen reflektiert werden.Wie erzwingen mehrere Ansichten, um die gleiche Modellreihe zu zeigen
Dies kann über (ein potentielles Chaos von) Signalen und Slots erfolgen, aber ich frage mich, ob es eine Möglichkeit gibt, es vom Modellende sauberer zu machen. I.e. Erzwinge, dass alle Ansichten dieselbe Zeile anzeigen.
Ein Kommentar unten deutet darauf hin, das selectionModel unter den Combos zu teilen. Ich habe dies getan, indem meine Combos in eine Liste zu sammeln und ein Modell auf sie setzen:
QList<QComboBox*> my_combos;
// .. then populate my_combos .. then
QComboBox *combo;
foreach(combo, my_combos)
combo->setModel(&_my_model);
dann
QItemSelectionModel *selectionmodel = my_combos.at(0)->view()->selectionModel();
foreach(combo, my_combos)
{
if (combo == my_combos.at(0))
continue;
combo->view()->setSelectionModel(selectionmodel);
}
Bin ich hier einen Schritt fehlt?
Das Datenmodell kennt die Ansichten nicht, und es ist nicht seine Aufgabe, damit umzugehen. –
Messepunkt - Haben Sie einen Vorschlag, wie Sie das sauber machen können? Wie sieht das Beispiel Hayt aus? – mike