Russian Qt Forum

Qt => Model-View (MV) => Тема начата: Chester от Март 31, 2010, 11:00



Название: Перегрузка методов базовых классов
Отправлено: Chester от Март 31, 2010, 11:00
Доброго времени суток!!!
Есть один такой вопросик общего характера.. вот когда я перегружаю какой-нибудь метод класса ... нужно ли мне,после моего собственного определения метода передавать управление его стандартному методу ???

Например,переопределяю метод setEditorData класса QItemDelegate
Код
C++ (Qt)
void setEditorData(QWidget *editor,const QModelIndex &index) const{
    double value = index.model()->data(index, Qt::EditRole).toDouble();
    QDoubleSpinBox *dsb = static_cast<QDoubleSpinBox*>(editor);
    dsb->setValue(value);
QItemDelegate::setEditorData(editor,index);// nugna li eta strochka??
  }
 

т.е. нужно ли писать QItemDelegate::setEditorData(editor,index);???


Название: Re: Перегрузка методов базовых классов
Отправлено: BRE от Март 31, 2010, 11:12
Если тебе нужно выполнить те действия, которые происходят в методе базового класса, то нужно.
А если ты заново сам определил поведение этого метода, то не нужно.


Название: Re: Перегрузка методов базовых классов
Отправлено: cya-st от Март 31, 2010, 11:37
Зависит от ситуации, но именно в твоем варианте нужно.


Название: Re: Перегрузка методов базовых классов
Отправлено: Chester от Март 31, 2010, 13:35
спасибо за ответы!!!
просто во многих примерах этой строчки нет...поэтому и есть сомнения - нужна ли она вообще )))
напр. http://doc.crossplatform.ru/qt/4.5.0/model-view-delegate.html


Название: Re: Перегрузка методов базовых классов
Отправлено: Chester от Март 31, 2010, 14:43
Я так полагаю,что эта строчка нужна, если по каким либо причинам не определится *dsb, т.е. если не сработает мой метод должен вызваться родной метод...
Или вызов стандартного метода должен как-то дополнить мой метод???