Е
Евгений199017042 декабря 2020 г. 11:19

Qml, tableview

qml, TableView, TableViewColumn

Есть tableview и модель описанная в c++, как я могу в зависимости от значения в ячейке менять цвет всей строки?

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

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

3
ДК
  • 2 декабря 2020 г. 11:29

через делегат
https://evileg.com/ru/post/624/

    Е
    • 3 декабря 2020 г. 11:53

    это я понимаю, проблема в том, что при изменении данных в модели, само содержание ячейки меняется, а вот метод для ее окраски в зависимости от содержания, не вызывается

      P
      • 20 марта 2021 г. 4:06
      • (ред.)

      Аналогично, нужно подсвечивать выбранные строки, строку можно выбрать, нажав по любой ячейке. В моделе сохраняется состояние строки. При нажатии обновляется только ячейка, по которой нажал, а не вся строка. При скролинге, после выхода строки из области видимости выбранные строки отображаются полностью подсвеченные.

      Получается, что делегат обновляется по сигналу:
      void QAbstractItemModel::dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector &roles = QVector ())

      topLeft и bottomRight - задает диапазон данных которые обновились, в данном случае это одна ячейка.
      Чтобы обновить строку, можно послать сигнал dataChanged, изменив topLeft и bottomRight на всю строку

      //cppModel
      void EffectProxyTableModel::updateRowData(const QModelIndex &topLeft)
      {
          QModelIndex newTopLeft = topLeft.model()->index(topLeft.row(), 0);
          QModelIndex newBottonRight = topLeft.model()->index(topLeft.row(), columnCount());
          emit dataChanged(newTopLeft, newBottonRight, QVector<int>());
          emit updateRowDataCompleted();
      }
      

      и в QML на время надо отключать обработку сигнала dataChanged:

      TableView {
          // ....
          Connections {
              id: connectionsOnDataChanged
              target: cppModel
              function onDataChanged(topLeft, bottomRight, role) {
                  connectionsOnDataChanged.enabled = false
                  cppModel.updateRowData(topLeft)
              }
          }
      
          Connections {
              target: cppModel
              function onUpdateRowDataCompleted() {
                  connectionsOnDataChanged.enabled = true
              }
          }
      }
      

        Комментарии

        Только авторизованные пользователи могут публиковать комментарии.
        Пожалуйста, авторизуйтесь или зарегистрируйтесь
        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
        Последние комментарии
        ИМ
        Игорь Максимов22 ноября 2024 г. 11:51
        Django - Урок 017. Кастомизированная страница авторизации на Django Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
        Evgenii Legotckoi
        Evgenii Legotckoi31 октября 2024 г. 14:37
        Django - Урок 064. Как написать расширение для Python Markdown Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
        A
        ALO1ZE19 октября 2024 г. 8:19
        Читалка fb3-файлов на Qt Creator Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
        ИМ
        Игорь Максимов5 октября 2024 г. 7:51
        Django - Урок 064. Как написать расширение для Python Markdown Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
        d
        dblas55 июля 2024 г. 11:02
        QML - Урок 016. База данных SQLite и работа с ней в QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
        Сейчас обсуждают на форуме
        m
        moogo22 ноября 2024 г. 7:17
        Mosquito Spray System Effective Mosquito Systems for Backyard | Eco-Friendly Misting Control Device & Repellent Spray - Moogo ; Upgrade your backyard with our mosquito-repellent device! Our misters conce…
        Evgenii Legotckoi
        Evgenii Legotckoi24 июня 2024 г. 15:11
        добавить qlineseries в функции Я тут. Работы оень много. Отправил его в бан.
        t
        tonypeachey115 ноября 2024 г. 6:04
        google domain [url=https://google.com/]domain[/url] domain [http://www.example.com link title]
        NSProject
        NSProject4 июня 2022 г. 3:49
        Всё ещё разбираюсь с кешем. В следствии прочтения данной статьи. Я принял для себя решение сделать кеширование свойств менеджера модели LikeDislike. И так как установка evileg_core для меня не была возможна, ибо он писался…

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