2016-02-08 8 views
2

Я пытаюсь сделать интерфейс на основе таблиц следующим образом:Widgets как данные в QTableView

| QComboBox | QPushButton | Empty  | 
| Some data | Some data | QPushButton | 
| Some data | Some data | Empty  | (all additional rows resemble this one) 

В первом ряду, я хочу QComboBox с некоторыми выборами, которые определяются на основе возвращаемого значения другая функция, а QPushButton с прикреплены к триггерам, которые будут вставлять или удалять данные.

Предполагая, что я могу сгенерировать QComboBox и QPushButton с собой, как я могу их вставить в QTableView в этих местах? В настоящее время у меня есть модель, которая должным образом хранит данные, которые должны отображаться в местах с пометкой «Некоторые данные» и не возвращать данные для специальных или «пустых» местоположений, и у меня есть QStyledItemDelegate, который должен вставлять эти виджеты для меня, но он только вставляет их, когда я дважды щелкаю по полю (я полагаю, это триггер для createEditor).

+0

См. Также http://stackoverflow.com/questions/30457935/pyqt4-adding-combobox-in-qtableview/30460687#30460687 – Andy

ответ

1

Выяснил это.

QAbstractItemView (и по расширению QTableView) имеют метод, называемый setIndexWidget, который может использоваться для размещения виджета в местоположении. Используя этот метод, я могу вставить соответствующие виджеты при инициализации, не полагаясь вообще на делегата.