Paint очищает данные в qtableview

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

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


person Sivaramakrishna Shriraam    schedule 04.05.2016    source источник


Ответы (1)


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

Итак, решение будет иметь вид

void PushButtonDelegate::paint(QPainter *painter,const QStyleOptionViewItem &option, const QModelIndex &index) const {

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

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

}

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

person Sivaramakrishna Shriraam    schedule 04.05.2016