Есть ли функциональность Binding для Qt (или QtJambi), аналогичная WPF Binding? - PullRequest
1 голос
/ 22 марта 2012

Говоря о связывании WPF по сравнению с Qt, кто-нибудь пытался добиться функциональности, которая в WPF достигается следующими способами:

<ComboBox ItemsSource="{Binding Items}" SelectedValue="{Binding SelectedItem}" />

Вот:

  1. Коллекция предметов (член модели), связанная с выпадающим списком в качестве источника комбо.
  2. Затем комбо-выбор привязывается к SelectedItem (член модели).

В Qt:

  1. Может быть относительно легко достигнуто с помощью QComboBox.setModel ().
  2. Немного сложнее, потому что это двусторонняя привязка. Изменения вида к модели могут быть сделаны с помощью сигналов (QComboBox.activationIndexChanged). Изменения модели для просмотра также могут быть выполнены с помощью сигналов (чтобы следовать разделению между моделью и видом, вам необходимо добавить сигнал в модель, генерировать его всякий раз, когда в модели изменяется SelectedItemIndex, и на стороне виджета подключаться к этому сигналу для вызова QComboBox.setCurrentIndex ()).

Все это, казалось, было очень общим делом и могло быть сделано в отдельной библиотеке помощников по связыванию. Например, прямо сейчас в моем коде QtJambi есть что-то вроде этого:

ComboBoxBind bind = new ComboBoxBind(comboBox);
bind.selectedIndex(model, "SelectedItemIndex").items(model.getItems());

CurrentIndex QComboBox здесь привязан к члену SelectedItemIndex модели (с соответствующими методами get / set). Поэтому я могу вызвать setSelectedItemIndex для модели или изменить выбор в пользовательском интерфейсе - модель будет синхронизирована с представлением.

Вопрос: Кто-нибудь знает, существует ли библиотека Binding? Кто-нибудь пробовал создать нечто подобное?

Извините, может быть, я что-то упустил. Я довольно опытный в WPF, но только начал с Qt и разрабатывал пользовательский интерфейс с QtJambi прямо сейчас. Любые комментарии / идеи приветствуются!

Этот вопрос относится к этому вопросу: Эквивалент Qt связывания данных .NET? , но я думаю, что на этот вопрос вообще не было ответа. По крайней мере, он не предоставляет никакого образца WPF-подобного Binding в Qt.

...