Как использовать модель для QCombobox - PullRequest
8 голосов
/ 27 августа 2010

Я хочу использовать QCombobox как Combobox из Swing в Java. Поэтому мне нужно использовать Model для удержания моего объекта. Как я могу держать свой объект в QCombobox. (Я думаю, что я должен хранить данные в Model, потому что QCombobox был разработан в соответствии с MVC Pattern ...) Любая помощь будет оценена.

Ответы [ 3 ]

9 голосов
/ 27 августа 2010

В зависимости от того, что вы хотите отобразить с помощью QComboBox, вам нужно написать собственную модель, наследуя QAbstractListModel, переопределив rowCount() и data().

Затем используйте QComboBox::setModel(), чтобы QComboBox отобразил его.

Если вы просто хотите отобразить строки, вы можете использовать QStringListModel, предоставленный Qt.

4 голосов
/ 27 августа 2010

Вы можете добавить модель к вашему QCombobox, используя функцию setModel.Вы можете использовать предопределенную модель или создать свою собственную, унаследовав от QAbstractItemModel.

Ваша модель будет содержать ваш объект для отделения отображения от данных.

2 голосов
/ 27 августа 2010

Qt использует упрощенную версию MVC, которая имеет только части Модель / Вид.

Вы можете использовать один из предоставленных подклассов QAbstractItemModel , если вам не нужно специализированное поведение, которое зависит от того, храните ли вы свои данные в файловой системе или структуру данных в памяти .

Вы должны прочитать весь раздел по программированию модели / вида в документации Qt.

...