2016-05-04 17 views
0

Мне нужно отображать данные в QTableView, у меня есть модель, у которой есть данные, но я подклассифицировал QAbstractProxyModel для переноса данных в моей модели. Далее мне нужна только одна кнопка в QTableView, которая может быть достигнута путем подкласса QItemDelegate, Теперь проблема заключается в том, что я установил view-> setItemDelegate (MyItemDelegate) (для кнопки); вид-> комплектModel (myModel); view-> показать(); ... Я нахожу только кнопку, которую я нарисовал в методе paint при делегировании QItemDelegate. Я искал и обнаружил, что мне нужно установитьModelData() и setEditorData(), чтобы установить значения из myModel. Но я не знаю, правильно ли это, и если это так. Как установить set() .... Заранее спасибокраска очищает данные в qtableview

PS: - когда я пытаюсь просмотреть-> setModel (MyModel); view-> показать(); без setItemDelegate ... Я мог видеть данные в QTableView ... Но я не вижу данные после делегирования ... Вся эта боль только для QPushButton в QTableView

ответ

0

Идея состоит в том, чтобы добавить QItemDelegate :: paint (живописец, вариант, индекс); внутри метода рисования моего производного класса, где я рисую свою кнопку. Добавление вышеприведенной строки кода гарантирует, что таблица будет сначала нарисована, а затем я рисую выше раскрашенной таблицы.

Таким образом, решение будет выглядеть

ничтожной PushButtonDelegate :: краски (QPainter * художник, сопзИте QStyleOptionViewItem & варианта, Const QModelIndex & индекса) сопзЬ {

QItemDelegate :: краска (художник, опция ,индекс);

// нарисуем мою кнопку с помощью drawcontrol();

}

Если я не делаю это я потеряю данные .. что очевидно, когда вы понимаете, как работает краски, но не так легко понять, ... у меня ушло часа

 Смежные вопросы

  • Нет связанных вопросов^_^