Название: Как разделить столбцы на под столбцы
Отправлено: sektor от Май 10, 2019, 19:44
Отнаследовался от QAbstractTableModel и создал модель (отображение во вложении) , который отображает недельное расписание. Мне нужно разделить столбец на несколько под столбцов , как это сделать ? #include "calendarmodel.h" #include <QLocale> #include <QBrush> #include <QDebug>
CalendarModel::CalendarModel(QWidget *parent):QAbstractTableModel (parent) { _inWorkTime.setHMS(8,0,0); _outWorkTime.setHMS(19,0,0); _date = QDate::currentDate(); _firstDate = _date; setCalendarPage(_date.year(), _date.month());
}
void CalendarModel::setCalendarPage(int yoar, int mohth) { beginResetModel(); _firstDate = _firstDate.addDays(-_firstDate.dayOfWeek()+1); endResetModel(); }
int CalendarModel::rowCount(const QModelIndex &parent) const { return (_outWorkTime.hour()-_inWorkTime.hour())+2;
}
int CalendarModel::columnCount(const QModelIndex &parent) const { return 7; }
QVariant CalendarModel::data(const QModelIndex &index, int role) const { if(!index.isValid()) return QVariant(); switch (role) { case Qt::DisplayRole:
// return headerData(index.row(),Qt::Horizontal, Qt::DisplayRole); case Qt::BackgroundRole: if(index.row()==0) return QBrush(QColor(220, 220, 220)); // цвет секции аудитории if(index.column()==5 || index.column()==6) return QBrush(QColor(255, 199, 199)); if(_date.toString("ddd.dd.MM") == headerData(index.column(),Qt::Horizontal, Qt::DisplayRole)) return QBrush(QColor(255, 244, 158));
} return QVariant(); }
QVariant CalendarModel::headerData(int section, Qt::Orientation orientation, int role) const { if(orientation == Qt::Horizontal){ switch (role) { case Qt::DisplayRole: return _firstDate.addDays(section).toString("ddd.dd.MM");
case Qt::BackgroundRole: if(section % 2 == 0){ return QBrush(QColor(255, 241, 133)); } else return QBrush(QColor(252, 227, 38)); }
} if(orientation == Qt::Vertical){ switch (role) { case Qt::DisplayRole: if(section==0)return "Ауд"; return QString::number((_inWorkTime.hour()-1)+section)+":00"; case Qt::BackgroundRole: if(section==0) return QBrush(QColor(220, 220, 220)); // цвет секции аудитории
}
} return QVariant(); }
Или помогите партировать HierarchicalHeaderView (https://store.kde.org/p/1132194/ (https://store.kde.org/p/1132194/)) для Qt5.7
Название: Re: Как разделить столбцы на под столбцы
Отправлено: sektor от Май 11, 2019, 13:10
Решил проблему скрыв колонки и вместо них нарисовал в моделе и объединил с помощью setSpan .
|