BlinCT
BlinCT30 октября 2019 г. 7:17

Заполнение из TableModel происходит только для первого столбца

Всем привет.
При дебаге заметил что в методе data(const QModelIndex &index, int role) аргумент role изменяется, и получается что в switch не проходит проверку.
То есть заполняется первый столбец который попал под аргумент со значением 0 а дальше проверка пролетает.
Подскажите, я где то ошибаюсь в реализации или может ошибку допустил?
Спасибо

//
// Created by root on 08.10.19.
//

#include <QDebug>
#include <utility>

#include "TableModel.hpp"
#include "SupPowerStatesModelObject.hpp"

TableModel::TableModel(QVector<SupportedPowerStates * > vector)
    : m_columnCount(0)
    , m_rowCount(0)
    , m_object(0)
    , m_vector(std::move(vector))
{}

int TableModel::rowCount(const QModelIndex &parent) const
{
    return m_vector.size();
}

int TableModel::columnCount(const QModelIndex &parent) const
{
    return 11;
}

QVariant TableModel::data(const QModelIndex &index, int role) const
{
    if(!index.isValid())
    {
        qDebug() << "Not Valid: ";
        return QVariant();
    }

    int row = index.row();
    int col = index.column();

    auto tmp = m_vector.at(row);

    switch (role)
    {
        case Qt::DisplayRole:
            return getData(tmp, col);
        default:
            break;
    }

    return QVariant();
}

QVariant TableModel::headerData(int section, Qt::Orientation orientation, int role) const
{
    if( role != Qt::DisplayRole )
    {
        return QVariant();
    }

    if( orientation == Qt::Vertical )
    {
        return section;
    }

    switch( section )
    {
        case 0:
            return tr( "St" );
        case 1:
            return tr( "Op" );
        case 2:
            return tr( "Max" );
        case 3:
            return tr( "Active" );
        case 4:
            return tr( "Idle" );
        case 5:
            return tr( "RL" );
        case 6:
            return tr( "RT" );
        case 7:
            return tr( "WL" );
        case 8:
            return tr( "WT" );
        case 9:
            return tr( "Ent_Lat" );
        case 10:
            return tr( "Ex_lat" );
    }

}

QVariant TableModel::getData(SupportedPowerStates* data, int column) const
{
    if (column == 0)
        return QVariant(data->id);
    else if (column == 1)
        return QVariant(data->nvmeIdPowerState.flags);
    else if (column == 2)
            return QVariant(data->nvmeIdPowerState.max_power);
    else if (column == 3)
            return QVariant(data->nvmeIdPowerState.active_power);
    else if (column == 4)
            return QVariant(data->nvmeIdPowerState.idle_power);
    else if (column == 5)
            return QVariant(data->nvmeIdPowerState.read_lat);
    else if (column == 6)
            return QVariant(data->nvmeIdPowerState.read_tput);
    else if (column == 7)
            return QVariant(data->nvmeIdPowerState.write_lat);
    else if (column == 8)
            return QVariant(data->nvmeIdPowerState.write_tput);
    else if (column == 9)
        return QVariant(data->nvmeIdPowerState.entry_lat);
    else if (column == 10)
        return QVariant(data->nvmeIdPowerState.exit_lat);
}

QHash<int, QByteArray> TableModel::roleNames() const
{
    QHash<int, QByteArray> roles;
    roles[St]       = "St";
    roles[Op]       = "Op";
    roles[Max]      = "Max";
    roles[Active]   = "Active";
    roles[Idle]     = "Idle";
    roles[RL]       = "RL";
    roles[RT]       = "RT";
    roles[WL]       = "WL";
    roles[WT]       = "WT";
    roles[Ent_Lat]  = "Ent_Lat";
    roles[Ex_lat]   = "Ex_lat";
    return roles;
}

//////////////////////////////////////////////////////////////

TableView
{
    clip: true

    TableViewColumn { width: 40; role: "St"; title: "St" }
    TableViewColumn { width: 40; role: "Op"; title: "Op" }
    TableViewColumn { width: 80; role: "Max"; title: "Max" }
    TableViewColumn { width: 80; role: "Active"; title: "Active" }
    TableViewColumn { width: 40; role: "Idle"; title: "Idle" }
    TableViewColumn { width: 40; role: "RL"; title: "RL" }
    TableViewColumn { width: 40; role: "RT"; title: "RT" }
    TableViewColumn { width: 40; role: "WL"; title: "WL" }
    TableViewColumn { width: 40; role: "WT"; title: "WT" }
    TableViewColumn { width: 80; role: "Ent_Lat"; title: "Ent_Lat" }
    TableViewColumn { width: 80; role: "Ex_lat"; title: "Ex_lat" }

    model: tableModel
}
Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.

Вам это нравится? Поделитесь в социальных сетях!

4
МП
  • 30 октября 2019 г. 7:42
  • Ответ был помечен как решение.

Ну так вы определили роли. Вот в data их и используйте теперь. role это столбец.

    МП
    • 30 октября 2019 г. 7:45

    Первое что попалось:

      BlinCT
      • 30 октября 2019 г. 7:48

      Спасибо, понял где реализация не доделана)

        BlinCT
        • 30 октября 2019 г. 9:08

        Только проблема в том что приходится юзать первые контролы. И все вместе это выглядит убого.

          Комментарии

          Только авторизованные пользователи могут публиковать комментарии.
          Пожалуйста, авторизуйтесь или зарегистрируйтесь
          AD

          C++ - Тест 004. Указатели, Массивы и Циклы

          • Результат:50баллов,
          • Очки рейтинга-4
          m
          • molni99
          • 26 октября 2024 г. 1:37

          C++ - Тест 004. Указатели, Массивы и Циклы

          • Результат:80баллов,
          • Очки рейтинга4
          m
          • molni99
          • 26 октября 2024 г. 1:29

          C++ - Тест 004. Указатели, Массивы и Циклы

          • Результат:20баллов,
          • Очки рейтинга-10
          Последние комментарии
          i
          innorwall14 ноября 2024 г. 21:26
          Qt/C++ - Урок 031. QCustomPlot - строим график по времени buy generic priligy We can just chat, and we will not lose too much time anyway
          i
          innorwall14 ноября 2024 г. 19:03
          Qt/C++ - Урок 060. Настройка внешнего вида приложения в рантайме I didnt have an issue work colors priligy dapoxetine 60mg revia cost uk August 3, 2022 Reply
          i
          innorwall14 ноября 2024 г. 11:42
          Как Копировать Файлы в Linux If only females relatives with DZ offspring were considered these percentages were 23 order priligy online uk
          i
          innorwall14 ноября 2024 г. 9:09
          Qt/C++ - Урок 068. Hello World с использованием системы сборки CMAKE в CLion ditropan pristiq dosing With the Yankees leading, 4 3, Rivera jogged in from the bullpen to a standing ovation as he prepared for his final appearance in Chicago buy priligy pakistan
          Сейчас обсуждают на форуме
          i
          innorwall14 ноября 2024 г. 3:39
          добавить qlineseries в функции priligy amazon canada 93 GREB1 protein GREB1 AB011147 6
          i
          innorwall11 ноября 2024 г. 10:55
          Всё ещё разбираюсь с кешем. priligy walgreens levitra dulcolax carbs The third ring was found to be made up of ultra relativistic electrons, which are also present in both the outer and inner rings
          9
          9Anonim25 октября 2024 г. 9:10
          Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…
          ИМ
          Игорь Максимов3 октября 2024 г. 4:05
          Реализация навигации по разделам Спасибо Евгений!

          Следите за нами в социальных сетях