Итак, я пишу игру Судоку на C ++.Я выполнил и протестировал большую часть игровой логики, но я хотел использовать Qt поверх него для GUI.Я пытался найти лучший способ работы с классами Qt для своих нужд.
В качестве теста я поиграл с QAbstractTableModel.Я вложил его в подкласс и получил доступ к моей существующей модели данных и моим существующим контроллерам.Сейчас я использую QTableView, чтобы получить базовый рендеринг платы Судоку и базовое «редактирование» (вы можете просто изменить любое значение).Это не похоже на то, что я хочу, но все функции есть (или могут быть добавлены).
Я хотел создать модель данных и контроллеры, чтобы модифицировать все это в C ++, вне зависимости от фреймворка.Тогда я просто хотел, чтобы Qt сидел сверху.Итак, у меня это работает, и вот краткая «диаграмма» того, как эти вещи взаимодействуют на высоком уровне
QTableView?
^
|
v
PuzzleModel : QAbstractTableModel
^ |
| |_____________
| v
Real data model classes <------------ Controllers
Мой вопрос заключается в том, как я могу изменить QTableView или я должен создать свой собственный вид или QWidgetчтобы отображать данные так, как я хочу?
В идеале я хотел бы отобразить таблицу фиксированного размера (без заголовков, без изменения размера) и запретить множественный выбор.Существуют некоторые настройки для отображения различных стилей / цветов шрифта, но я думаю, что справлюсь с этим довольно легко.Я также хотел бы отображать каждую ячейку как число или как «метки»:
*-------------* *-------------*
| 1 2 3 | | ****** |
| 4 6 | | * |
| 8 9 | | * |
*-------------* *-------------*
Так что я не могу продолжать использовать QTableView из коробки.Я создаю свой собственный QStyledItemDelegate и все еще использую QTableView?Нужно ли создавать целый виджет?Если я создам
Просто ищу какой-нибудь совет / указание от кого-то, кто знает возможности различных классов Qt.