Russian Qt Forum

Qt => Model-View (MV) => Тема начата: Flake от Апрель 16, 2009, 15:08



Название: Разные делегаты для одного столбца.
Отправлено: Flake от Апрель 16, 2009, 15:08
Здравствуйте.

Есть столбец в котором должны быть разные делегаты для ячеек.

Я вот думаю повесить делегат на столбец, а уже в нём, в методе createEditor, в зависимости от того какого типа ячейка возвращать нужный мне виджет едитора.

Подскажите какие есть ещё способы?


Название: Re: Разные делегаты для одного столбца.
Отправлено: pastor от Апрель 16, 2009, 16:10
Цитировать
Я вот думаю повесить делегат на столбец, а уже в нём, в методе createEditor, в зависимости от того какого типа ячейка возвращать нужный мне виджет едитора.

имхо вполне нормальный метод


Название: Re: Разные делегаты для одного столбца.
Отправлено: Flake от Апрель 17, 2009, 09:50
Спасибо.

Столкнулся с таким вопросом.
Вот код:
Код
C++ (Qt)
QWidget *objPropertyValueDelegate::createEditor(QWidget * parent, const QStyleOptionViewItem & option, const QModelIndex & index ) const
{
int flag = index.model()->data( index, Qt::UserRole ).toInt();
 
int row = index.row();
int col = index.column() - 1;
 
const QAbstractItemModel *model = index.model();
 
QString str;
 
QModelIndex ind = model->index(row, col);
str = model->data(ind, Qt::DisplayRole).toString();
 
QLineEdit *editor = 0;
 
if ( !flag )
{
editor = new QLineEdit(parent);
editor->setFrame( false );
}
 
return editor;
}

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

Как указать, что смотреть нужно в дочерние элементы?

Делал так:
Код
C++ (Qt)
QModelIndex ind = model->index(row, col, index);
Но результат тот же.

~Пофиксил :)
QModelIndex QModelIndex::parent () const