Отображение элементов QAbstractListModel в столбцах QTableView - PullRequest
2 голосов
/ 22 июня 2011

Я играл с Qt и столкнулся с небольшой проблемой.

Я хочу отобразить список картинок в виде таблицы значков.Прямо сейчас я делаю это путем создания подкласса QAbstractTableModel и включения его в подкласс QTableView .

Это, по моему мнению, чрезмерно усложняет код, модель и представление (особенно при попытке редактирования / добавления элементов).При попытке реализовать модель в виде QAbstractListModel элементы отображаются в виде строк таблицы.

Есть ли способ, чтобы вместо этого QTableView отображал элементы в виде столбцов?
Редактировать: Так, чтобы элементы отображались в одну строку слева направо и переносились в новую строку.

Или предпочтительнее использовать модель таблицы для таблицыв любом случае, и обойти проблемы?

Стоит отметить, что я использую привязки C # для Qt на основе Qt Jambi.

Ответы [ 2 ]

3 голосов
/ 23 июня 2011

QListView обладает именно той функциональностью, о которой вы говорите.

Если вам не нужны какие-либо функции, специфичные для QTableView, я бы предложил переключиться.

Если вы установите «isWrapping», то список будет начинаться сверху, спускаться вниз, а затем переходить в новый столбец.

Установите «поток» в LeftToRight для отображения списка в строках вместо столбцов

Вам также может понадобиться установить «resizeMode» вместо «Fixed» для «Adjust». Который будет автоматически перемещать вещи при изменении размера списка.

Надеюсь, это поможет.

Так же, как примечание, здесь является примером FlowLayout. Поэтому, если вы просто хотите отобразить набор изображений в саморегулирующейся сетке, это будет сделано для вас без лишних затрат на список / таблицу. Тем не менее, он не дает никаких возможностей выбора / редактирования или чего-либо еще, только макет.

0 голосов
/ 22 июня 2011

Я здесь чего-то не понимаю.Вы реализуете TableModel, чтобы подготовить данные к просмотру наиболее удобным способом.Предположим, у вас есть данные A, B, C, D, затем вы можете вернуть A (00), B (01), C (10), D (11) или, например, A (00), C (01), B(10), Д (11).Это то, что вы хотите сделать?

...