Пытался разобраться как добавить чекбоксы на представление. Нашел один вариант: ссылка Так приведен такой вариант решения
QVector<int> status;
int SData::getStatus(int pos)
{
return status.at(pos);
}
void SData::setStatus(int pos,int value)
{
status.insert(pos, value);
}
QVariant STableModel::data(const QModelIndex &index, int role) const
{
if (!index.isValid())
return QVariant();
if (role == Qt::DisplayRole)
return rowList[index.row()][index.column()];
else if (role == Qt::CheckStateRole && index.column() == 0)
{
int status = SData::instance().getStatus(index.row());
if (status)
return Qt::Checked;
else
return Qt::Unchecked;
}
else
return QVariant();
}
bool STableModel::setData(const QModelIndex &index,
const QVariant &value, int role)
{
if (!index.isValid() /*|| role != Qt::EditRole*/)
return false;
if (role == Qt::CheckStateRole)
{
if ((Qt::CheckState)value.toInt() == Qt::Checked)
{
SData::instance().setStatus(index.row(),1);
return true;
}
else
{
SData::instance().setStatus(index.row(), 0);
return true;
}
}
Непонятна эта часть кода:
int SData::getStatus(int pos)
{
return status.at(pos);
}
void SData::setStatus(int pos,int value)
{
status.insert(pos, value);
}
SData это класс наследованный от чего? getStatus и setStatus это статические методы класса?
И больше всего непонятна конструкция:
int status = SData::instance().getStatus(index.row());
instance() ? Это что? Как им пользоваться? Это метод наследного класса? Если да, то какого?
В принципе, удалось, разобраться. instance() оказался реализацией Singleton- заключается в использовании локальной статической переменной метода instance, хранящей единственный экземпляр класса (Синглтон Меерса).Блягодаря этой статье На данном этапе все заработало. Дальше буду разбираться.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости