0

Мне нужно создать форму, в которой некоторые вопросы будут взяты из db. Каждый вопрос будет иметь два radioButtons (Да/Нет), ярлык «Объяснить ...» и текстовый элемент. Сначала я создал это в QScrollArea, где для каждого вопроса в db (взятого с QSqlTableModel) все необходимые виджеты были созданы и помещены в макеты.ItemDelegate vs ProxyModel Подкласс

Теперь я думаю, что мне лучше сделать это в QListView, где все будет вопрос = его информация (вопрос + 2 radioButtons + label + textEdit + его макеты). Я думал, что могу легко сделать это с помощью QAbstractItemDelegate, поэтому я создал для него подкласс, но у меня есть некоторые проблемы. Вопрос не отображается вообще, даже его информация. Должен ли я использовать подкласс ProxyModel вместо этого? Я нашел очень полезный checkableProxyModel! подкласса, который добавил флажок для каждого элемента в модели, и я подумал, можно ли добавить checkBox, возможно, можно добавить всю эту информацию?

Любая идея?

Комментарий, если вам нужен какой-либо код.

ответ

0

Модель Qt & В классах классов предусмотрена возможность иметь дополнительный флажок, включив Qt::ItemIsUserCheckable в значение возврата флагов QAbstractItemModel::flags(). Однако классы Qt MV не позволяют использовать какой-либо пользовательский виджет, такой как переключатели, в качестве делегата.

Один из способов визуализации виджета будет использовать QStyle::drawComplexControl() в вашей реализации QAbstractItemModel :: paint(), но это становится сложно, если у вас есть несколько виджетов, подобных вашему делу, и он не обрабатывает взаимодействие.

Лучшим способом было бы использовать QAbstractItemView::setIndexWidget(), но см. this bug report для разработчика Qt, говорящего о последствиях производительности.

+0

Я узнал, что было возможно даже добавить переключатель, но в любом случае это было намного сложнее, и вместо того, чтобы сделать его более динамичным, у меня будет только сложный код :), так что это бесполезно, я думаю. Я думаю, что могу сделать это в qTreeView, задать вопрос как родительский и описание в качестве дочернего элемента вопроса, а второй столбец для флажка Y/N. Я посмотрю на рекомендуемые документы. Спасибо @tmcguire! – Dionis