сколько домов в городе
{
int apartment_count;
}
House houses[MAX_H]
struct Apartment//квартира, не знает сколько заселено
{
int persons_count;
int temp;
}
Apartment apartments[MAX_H][MAX_A];//массив всех возможных квартир во всех домах
Теперь надо отобразить в виде таблицы модель City->Apartments (DisplayRole == persons_count, BackgroundRole = (temp > 30)? red:green;)
Делаем модель для города:
CityModel :
ColCount = 1 ;
rowCount = 1//houses_count;
data(index) {
return houses_count
};
HousesModel:
setCityModelPtr(CityModel* cmp);
ColCount 1//flat_count;
RowCount = MAX_H;//housesCount;
data(index) {
if (index.row() < cmd.data())//если надо отобразить построеный дом
return houses[index.row].apartment_count;
return -1;//признак что дома такого нет
};
И теперь основная модель, для отображения:
CityApartmentsModel:
SetCityModelPtr(CityModel* cmp);
SetHousesModelPtr(HousesModel* hmp);
ColCount = MAX_A;//отображаем возможное число квартир
RowCount = MAX_H;//отображаем максимальное число домов
data (index) {
if (index.row() < cmp.data() && index.col() < hmp.data(index.row).apartment_count) { //дом построен и заселен
if (DisplayRole)
return apartments[index.row()][index.col()].persons_count;
if (BackgroundRole) {
return (apartments[index.row()][index.col()].temp > 30)? red:green;
}
}
else {//для не существующих или незаселенных квартир
if (DisplayRole) return -1;
if (BackgroundRole) return gray;
}//if (index)
}//data
Данные масивов обновляются сами по себе.
Меня в этом всем смущает необходимость тащить указатели на "старшие" модели, для самой последней, чтобы определить "валидные" дома и квартиры.
Что можете подсказать?
> чтобы определить "валидные" дома и квартиры. Что можете подсказать? может быть стоить подумать на счёт filter-proxy-моделей?
Обсуждают сегодня