BlinCT
Feb. 12, 2020, 12:46 a.m.

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

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

2

Do you like it? Share on social networks!

3
Алексей Внуков
  • Feb. 12, 2020, 5:20 p.m.

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

    BlinCT
    • Feb. 16, 2020, 10:25 p.m.

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

    1. SupportedPowerStatesModels::SupportedPowerStatesModels(QVector<SupportedPowerStates * > vector)
    2. : m_vector(std::move(vector))
    3. {}
    4.  
    5. int SupportedPowerStatesModels::rowCount(const QModelIndex &parent) const
    6. {
    7. return m_vector.size();
    8. }
    9.  
    10. int SupportedPowerStatesModels::columnCount(const QModelIndex &parent) const
    11. {
    12. return 11;
    13. }
    14.  
    15. QVariant SupportedPowerStatesModels::headerData(int section, Qt::Orientation orientation, int role) const
    16. {
    17. if( role != Qt::DisplayRole )
    18. {
    19. return QVariant();
    20. }
    21.  
    22. if( orientation == Qt::Vertical )
    23. {
    24. return section;
    25. }
    26.  
    27. switch( section )
    28. {
    29. case 0:
    30. return tr( "St" );
    31. case 1:
    32. return tr( "Op" );
    33. case 2:
    34. return tr( "Max" );
    35. case 3:
    36. return tr( "Active" );
    37. case 4:
    38. return tr( "Idle" );
    39. case 5:
    40. return tr( "RL" );
    41. case 6:
    42. return tr( "RT" );
    43. case 7:
    44. return tr( "WL" );
    45. case 8:
    46. return tr( "WT" );
    47. case 9:
    48. return tr( "Ent_Lat" );
    49. case 10:
    50. return tr( "Ex_lat" );
    51. default:
    52. return QVariant();
    53. }
    54.  
    55. }
    56.  
    57. QVariant SupportedPowerStatesModels::getData(SupportedPowerStates* data, int column) const
    58. {
    59. if (column == 0)
    60. return QVariant(data->id);
    61. else if (column == 1)
    62. return Util::toStr(data->nvmeIdPowerState.flags);
    63. else if (column == 2)
    64. return Util::toStr(data->nvmeIdPowerState.max_power);
    65. else if (column == 3)
    66. return Util::toStr(data->nvmeIdPowerState.active_power);
    67. else if (column == 4)
    68. return Util::toStr(data->nvmeIdPowerState.idle_power);
    69. else if (column == 5)
    70. return Util::toStr(data->nvmeIdPowerState.read_lat);
    71. else if (column == 6)
    72. return Util::toStr(data->nvmeIdPowerState.read_tput);
    73. else if (column == 7)
    74. return Util::toStr(data->nvmeIdPowerState.write_lat);
    75. else if (column == 8)
    76. return Util::toStr(data->nvmeIdPowerState.write_tput);
    77. else if (column == 9)
    78. return Util::toStr(data->nvmeIdPowerState.entry_lat);
    79. else if (column == 10)
    80. return Util::toStr(data->nvmeIdPowerState.exit_lat);
    81. else
    82. return QVariant();
    83. }
    84.  
    85. QHash<int, QByteArray> SupportedPowerStatesModels::roleNames() const
    86. {
    87. QHash<int, QByteArray> roles;
    88. roles[St] = "St";
    89. roles[Op] = "Op";
    90. roles[Max] = "Max";
    91. roles[Active] = "Active";
    92. roles[Idle] = "Idle";
    93. roles[RL] = "RL";
    94. roles[RT] = "RT";
    95. roles[WL] = "WL";
    96. roles[WT] = "WT";
    97. roles[Ent_Lat] = "Ent_Lat";
    98. roles[Ex_lat] = "Ex_lat";
    99. return roles;
    100. }
    101.  
    102. QVariant SupportedPowerStatesModels::data(const QModelIndex &index, int role) const
    103. {
    104. if(!index.isValid())
    105. {
    106. return QVariant();
    107. }
    108.  
    109. int row = index.row();
    110. int col = index.column();
    111.  
    112. auto tmp = m_vector.at(row);
    113.  
    114. if (role == RolePower::St)
    115. return getData(tmp, RolePower::St);
    116. else if (role == RolePower::Op)
    117. return getData(tmp, RolePower::Op);
    118. else if (role == RolePower::Max)
    119. return getData(tmp, RolePower::Max);
    120. else if (role == RolePower::Active)
    121. return getData(tmp, RolePower::Active);
    122. else if (role == RolePower::Idle)
    123. return getData(tmp, RolePower::Idle);
    124. else if (role == RolePower::RL)
    125. return getData(tmp, RolePower::RL);
    126. else if (role == RolePower::RT)
    127. return getData(tmp, RolePower::RT);
    128. else if (role == RolePower::WL)
    129. return getData(tmp, RolePower::WL);
    130. else if (role == RolePower::WT)
    131. return getData(tmp, RolePower::WT);
    132. else if (role == RolePower::Ent_Lat)
    133. return getData(tmp, RolePower::Ent_Lat);
    134. else if (role == RolePower::Ex_lat)
    135. return getData(tmp, RolePower::Ex_lat);
    136. else
    137. return QVariant();
    138. }

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

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

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

    1. import QtQuick 2.12
    2. import QtQuick.Controls 1.4
    3.  
    4. TableView
    5. {
    6. clip: true
    7.  
    8. TableViewColumn { width: 70; role: "St"; title: "St" }
    9. TableViewColumn { width: 70; role: "Op"; title: "Op" }
    10. TableViewColumn { width: 70; role: "Max"; title: "Max" }
    11. TableViewColumn { width: 70; role: "Active"; title: "Active" }
    12. TableViewColumn { width: 70; role: "Idle"; title: "Idle" }
    13. TableViewColumn { width: 50; role: "RL"; title: "RL" }
    14. TableViewColumn { width: 50; role: "RT"; title: "RT" }
    15. TableViewColumn { width: 50; role: "WL"; title: "WL" }
    16. TableViewColumn { width: 50; role: "WT"; title: "WT" }
    17. TableViewColumn { width: 70; role: "Ent_Lat"; title: "Ent_Lat" }
    18. TableViewColumn { width: 70; role: "Ex_lat"; title: "Ex_lat" }
    19.  
    20. model: tableModelPower
    21. }

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

      BlinCT
      • Feb. 19, 2020, 6:01 p.m.

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

        Comments

        Only authorized users can post comments.
        Please, Log in or Sign up
        • Last comments
        • AK
          April 1, 2025, 11:41 a.m.
          Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
        • Evgenii Legotckoi
          March 9, 2025, 9:02 p.m.
          К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…
        • VP
          March 9, 2025, 4:14 p.m.
          Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…
        • ИМ
          Nov. 22, 2024, 9:51 p.m.
          Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
        • Evgenii Legotckoi
          Oct. 31, 2024, 11:37 p.m.
          Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup