Russian Qt Forum

Qt => Model-View (MV) => Тема начата: Dr.Vlad от Май 27, 2010, 18:33



Название: Помогите раскрасить ряды QTableView в зелёный цвет.
Отправлено: Dr.Vlad от Май 27, 2010, 18:33
Помогите , пожалуйста, раскрасить ряды QTableView в зелёный цвет. Выборка рядов по определённому признаку.


Название: Re: Помогите раскрасить ряды QTableView в зелёный цвет.
Отправлено: crossly от Май 27, 2010, 18:47
варианта 2.... использовать делегат... или унаследоватся от модели и переопределить метод data


Название: Re: Помогите раскрасить ряды QTableView в зелёный цвет.
Отправлено: KuZ от Май 27, 2010, 19:43
имхо лучше делегат. В котором сделать что-то типо такого:
Код:
model->setData( model->indexFromItem( model->item(x,y) ), Qt::green, Qt::BackgroundColorRole );


Название: Re: Помогите раскрасить ряды QTableView в зелёный цвет.
Отправлено: Kolobok от Май 27, 2010, 22:40
имхо лучше делегат. В котором сделать что-то типо такого:
Код:
model->setData( model->indexFromItem( model->item(x,y) ), Qt::green, Qt::BackgroundColorRole );

Не надо советовать такую глупость.


Название: Re: Помогите раскрасить ряды QTableView в зелёный цвет.
Отправлено: lit-uriy от Май 27, 2010, 22:58
>>Выборка рядов по определённому признаку.
по какому признаку?


Название: Re: Помогите раскрасить ряды QTableView в зелёный цвет.
Отправлено: KuZ от Май 28, 2010, 00:29
имхо лучше делегат. В котором сделать что-то типо такого:
Код:
model->setData( model->indexFromItem( model->item(x,y) ), Qt::green, Qt::BackgroundColorRole );
Подскажи как лучше плз, чтоб и самому знать.

Не надо советовать такую глупость.


Название: Re: Помогите раскрасить ряды QTableView в зелёный цве
Отправлено: SibViking от Май 28, 2010, 04:45
Лучше свою собственную модель создать на базе QAbstractTableModel, куда можно засунуть и "ряды" и "определенный признак", а чтобы в цвет раскрасить и  правильным образом вывести воспользоваться ролями в методе data

QVariant MyModel::data(const QModelIndex &index, int role) const
{
    if(!index.isValid())
        return QVariant();
    ...
    if(role == Qt::BackgroundRole) {
           if("что то там с признаком")
               return Qt::green;
    }
    ...
}