Qt

Изменить цвет фона и текста ячейки или строки QTableView

Для решения поставленной задачи отнаследуемся от класса QIdentityProxyModel:

[pastacode lang=»cpp» manual=»%23include%20%3CQDialog%3E%0A%23include%20%3CQSqlQueryModel%3E%0A%23include%20%3CQIdentityProxyModel%3E%0A%0Aclass%20ColorCell%20%3A%20public%20QIdentityProxyModel%0A%7B%0Apublic%3A%0A%20%20%20%20ColorCell()%20%7B%7D%0Aprotected%3A%0A%20%20%20%20virtual%20QVariant%20data(const%20QModelIndex%20%26index%2C%20int%20role)%20const%3B%0A%7D%3B%0A%0A%0Aclass%20myClass%3A%20public%20QDialog%20%7B%0A….%0Aprivate%20slots%3A%0A%09void%20updateModel()%3B%0Aprivate%3A%0A%09QSqlQueryModel%20*model%3B%0A%09ColorCell%20*colorCellModel%3B%0A%7D» message=»» highlight=»» provider=»manual»/]

Переопределим функцию data:

[pastacode lang=»cpp» manual=»QVariant%20ColorCell%3A%3Adata(const%20QModelIndex%20%26index%2C%20int%20role)%20const%0A%7B%0A%20%20%20%20%2F%2F%D0%B8%D0%B7%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5%20%D1%86%D0%B2%D0%B5%D1%82%D0%B0%20%D1%82%D0%B5%D0%BA%D1%81%D1%82%D0%B0%20%D0%BD%D0%B0%20%D0%BA%D1%80%D0%B0%D1%81%D0%BD%D1%8B%D0%B9%20%D0%B2%200-%D0%BE%D0%B9%20%D0%BA%D0%BE%D0%BB%D0%BE%D0%BD%D0%BA%D0%B5%0A%09if%20(role%20%3D%3D%20Qt%3A%3AForegroundRole)%20%7B%0A%20%20%20%20%20%20%20%20if%20(index.column()%20%3D%3D%200)%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20QBrush(Qt%3A%3Ared)%3B%0A%20%20%20%20%7D%0A%09%2F%2F%D0%B8%D0%B7%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5%20%D1%86%D0%B2%D0%B5%D1%82%D0%B0%20%D1%84%D0%BE%D0%BD%D0%B0%20%D0%B2%D1%81%D0%B5%D0%B9%20%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8%20%D0%BF%D0%BE%20%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D1%8E%20%D0%B2%20%D1%8F%D1%87%D0%B5%D0%B9%D0%BA%D0%B5%204-%D0%BE%D0%B9%20%D0%BA%D0%BE%D0%BB%D0%BE%D0%BD%D0%BA%D0%B8%0A%09if%20(role%20%3D%3D%20Qt%3A%3ABackgroundRole)%20%7B%0A%20%20%20%20%20%20%20%20if(!index.model()-%3Edata(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20index.model()-%3Eindex(index.row()%2C%204)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Qt%3A%3ADisplayRole).toBool())%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20QBrush(Qt%3A%3Agreen)%3B%0A%20%20%20%20%20%20%20%20else%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20QBrush(Qt%3A%3Ablue)%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20QIdentityProxyModel%3A%3Adata(index%2C%20role)%3B%0A%7D» message=»» highlight=»» provider=»manual»/]

Теперь определим для нашей прокси-модели ее модель-источник:

[pastacode lang=»cpp» manual=»myClass%3A%3AmyClass(QWidget%20*parent)%20%3A%0A%20%20%20%20QDialog(parent)%2C%0A%20%20%20%20ui(new%20Ui%3A%3ABuffer)%0A%7B%0A%09ui-%3EsetupUi(this)%3B%0A%20%20%20%20colorCellModel%20%3D%20nullptr%3B%0A%09model%20%3D%20nullptr%3B%0A%09updateModel()%3B%0A%7D%0A%0Avoid%20myClass%3A%3AupdateModel()%20%7B%0A%09if%20(!model)%20%7B%0A%09%09model%20%3D%20new%20QSqlQueryModel%3B%0A%20%20%20%20%09colorCellModel%20%3D%20new%20ColorCell%3B%0A%20%20%20%20%09ui-%3EtableView-%3EsetModel(colorCellModel)%3B%0A%09%7D%0A%09model-%3EsetQuery(%3Cquery%20text%3E)%3B%0A%09colorCellModel-%3EsetSourceModel(model)%3B%0A%7D» message=»Установка модели в качестве sourceModel для обработки прокси-моделью» highlight=»» provider=»manual»/]

Теперь таблица будет раскрашена в соответствии с заданными условиями.

Qt

Получить значения полей выделенной строки QTableView

Для получения значения полей выделенной строки QTableView можно использовать несколько вариантов. Продолжить чтение «Получить значения полей выделенной строки QTableView»

Qt

Значения ячеек выделенных строк QTableView

Необходимо узнать значения ячеек выделенных строк в таблице класса QTableView, которая отображает некоторые данные.

Следующий пример покажет, как записать значения 0-ой ячейки каждой выделенной строки в список, а затем сформировать строку из этих значений, элементы которой разделены «,»: Продолжить чтение «Значения ячеек выделенных строк QTableView»

C++, Qt, Базы данных

Отображение данных выборки в виджете QTableView

Предположим, что на форме расположен объект класса QStackedWidget, на страницах которого расположены объекты QTableView, отображающие различные данные. В один момент времени данные будут отображаться только в одном из виджетов QTableView (по одному на страницу stacked widget). Объявим модель для данных типа QSqlQueryModel: Продолжить чтение «Отображение данных выборки в виджете QTableView»