BlinCT
BlinCT11. Februar 2020 13:46

Отсутствие таблицы в qml при наличии данных на стороне C++

Всем привет.
Такой вопрос, есть 2 таблицы данных, разное колличество строк и стобцов когда из них создаю модель.
Если я ыыписываю в консоль из C++ но норм отображается.
Но если я передаю в qml данные модели то одна таблица отображается а другйо нету, то есть даже названяи столбцов нету.
Вопрос, от куда и где стоит искать ошибку?
Вроде все правильно, но таблицы нету(
Спасибо.

Рекомендуємо хостинг TIMEWEB
Рекомендуємо хостинг TIMEWEB
Stabiles Hosting des sozialen Netzwerks EVILEG. Wir empfehlen VDS-Hosting für Django-Projekte.

Magst du es? In sozialen Netzwerken teilen!

3
Алексей Внуков
  • 12. Februar 2020 06:20

копайте в сторону модели, и ее отображения

    BlinCT
    • 16. Februar 2020 11:25

    Вот моя модель так выглядит

    SupportedPowerStatesModels::SupportedPowerStatesModels(QVector<SupportedPowerStates * > vector)
        : m_vector(std::move(vector))
    {}
    
    int SupportedPowerStatesModels::rowCount(const QModelIndex &parent) const
    {
        return m_vector.size();
    }
    
    int SupportedPowerStatesModels::columnCount(const QModelIndex &parent) const
    {
        return 11;
    }
    
    QVariant SupportedPowerStatesModels::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" );
            default:
                return QVariant();
        }
    
    }
    
    QVariant SupportedPowerStatesModels::getData(SupportedPowerStates* data, int column) const
    {
        if (column == 0)
            return QVariant(data->id);
        else if (column == 1)
            return Util::toStr(data->nvmeIdPowerState.flags);
        else if (column == 2)
            return Util::toStr(data->nvmeIdPowerState.max_power);
        else if (column == 3)
            return Util::toStr(data->nvmeIdPowerState.active_power);
        else if (column == 4)
            return Util::toStr(data->nvmeIdPowerState.idle_power);
        else if (column == 5)
            return Util::toStr(data->nvmeIdPowerState.read_lat);
        else if (column == 6)
            return Util::toStr(data->nvmeIdPowerState.read_tput);
        else if (column == 7)
            return Util::toStr(data->nvmeIdPowerState.write_lat);
        else if (column == 8)
            return Util::toStr(data->nvmeIdPowerState.write_tput);
        else if (column == 9)
            return Util::toStr(data->nvmeIdPowerState.entry_lat);
        else if (column == 10)
            return Util::toStr(data->nvmeIdPowerState.exit_lat);
        else
            return QVariant();
    }
    
    QHash<int, QByteArray> SupportedPowerStatesModels::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;
    }
    
    QVariant SupportedPowerStatesModels::data(const QModelIndex &index, int role) const
    {
        if(!index.isValid())
        {
            return QVariant();
        }
    
        int row = index.row();
        int col = index.column();
    
        auto tmp = m_vector.at(row);
    
        if (role == RolePower::St)
            return getData(tmp, RolePower::St);
        else if (role == RolePower::Op)
            return getData(tmp, RolePower::Op);
        else if (role == RolePower::Max)
            return getData(tmp, RolePower::Max);
        else if (role == RolePower::Active)
            return getData(tmp, RolePower::Active);
        else if (role == RolePower::Idle)
            return getData(tmp, RolePower::Idle);
        else if (role == RolePower::RL)
            return getData(tmp, RolePower::RL);
        else if (role == RolePower::RT)
            return getData(tmp, RolePower::RT);
        else if (role == RolePower::WL)
            return getData(tmp, RolePower::WL);
        else if (role == RolePower::WT)
            return getData(tmp, RolePower::WT);
        else if (role == RolePower::Ent_Lat)
            return getData(tmp, RolePower::Ent_Lat);
        else if (role == RolePower::Ex_lat)
            return getData(tmp, RolePower::Ex_lat);
        else
            return QVariant();
    }
    

    Тут кусочек из main.cpp

    auto pPowerStates = new SupportedPowerStatesModels(vecPower);
    engine.rootContext()->setContextProperty("tableModelPower", pPowerStates);
    

    И сама модель как я ее добавляю в qml

    import QtQuick 2.12
    import QtQuick.Controls 1.4
    
    TableView
    {
        clip: true
    
        TableViewColumn { width: 70; role: "St";        title: "St" }
        TableViewColumn { width: 70; role: "Op";        title: "Op" }
        TableViewColumn { width: 70; role: "Max";       title: "Max" }
        TableViewColumn { width: 70; role: "Active";    title: "Active" }
        TableViewColumn { width: 70; role: "Idle";      title: "Idle" }
        TableViewColumn { width: 50; role: "RL";        title: "RL" }
        TableViewColumn { width: 50; role: "RT";        title: "RT" }
        TableViewColumn { width: 50; role: "WL";        title: "WL" }
        TableViewColumn { width: 50; role: "WT";        title: "WT" }
        TableViewColumn { width: 70; role: "Ent_Lat";   title: "Ent_Lat" }
        TableViewColumn { width: 70; role: "Ex_lat";    title: "Ex_lat" }
    
        model: tableModelPower
    }
    

    Я вот не вижу тут вообще ничего что может мешать созданию таблицы.

      BlinCT
      • 19. Februar 2020 07:01

      Просто реально не вижу тут каких то проблем в модели, вот вообще ничего.
      Но она все равно не отображается, то есть ладно бы если данные бы не появлялись а сама таблица была бы. Так и таблицы нету.

        Kommentare

        Nur autorisierte Benutzer können Kommentare posten.
        Bitte Anmelden oder Registrieren
        Letzte Kommentare
        A
        ALO1ZE19. Oktober 2024 08:19
        Fb3-Dateileser auf Qt Creator Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
        ИМ
        Игорь Максимов5. Oktober 2024 07:51
        Django – Lektion 064. So schreiben Sie eine Python-Markdown-Erweiterung Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
        d
        dblas55. Juli 2024 11:02
        QML - Lektion 016. SQLite-Datenbank und das Arbeiten damit in QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
        k
        kmssr8. Februar 2024 18:43
        Qt Linux - Lektion 001. Autorun Qt-Anwendung unter Linux как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
        Qt WinAPI - Lektion 007. Arbeiten mit ICMP-Ping in Qt Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
        Jetzt im Forum diskutieren
        J
        JacobFib17. Oktober 2024 03:27
        добавить qlineseries в функции Пользователь может получить любые разъяснения по интересующим вопросам, касающимся обработки его персональных данных, обратившись к Оператору с помощью электронной почты https://topdecorpro.ru…
        JW
        Jhon Wick1. Oktober 2024 15:52
        Indian Food Restaurant In Columbus OH| Layla’s Kitchen Indian Restaurant If you're looking for a truly authentic https://www.laylaskitchenrestaurantohio.com/ , Layla’s Kitchen Indian Restaurant is your go-to destination. Located at 6152 Cleveland Ave, Colu…
        КГ
        Кирилл Гусарев27. September 2024 09:09
        Не запускается программа на Qt: точка входа в процедуру не найдена в библиотеке DLL Написал программу на C++ Qt в Qt Creator, сбилдил Release с помощью MinGW 64-bit, бинарнику напихал dll-ки с помощью windeployqt.exe. При попытке запуска моей сбилженной программы выдаёт три оши…
        F
        Fynjy22. Juli 2024 04:15
        при создании qml проекта Kits есть но недоступны для выбора Поставил Qt Creator 11.0.2. Qt 6.4.3 При создании проекта Qml не могу выбрать Kits, они все недоступны, хотя настроены и при создании обычного Qt Widget приложения их можно выбрать. В чем может …

        Folgen Sie uns in sozialen Netzwerken