Есть ли простой способ изменить цвет фона строки в QTableWidget? - PullRequest
5 голосов
/ 18 февраля 2011

Я знаю, что вы можете перебирать QTableWidgetItems и изменять их цвета, но что, если я использовал setCellWidget и у меня есть ячейки, которые не являются QTableWidgetItems. Я не могу найти простой метод setRowColor. Кажется, что должно быть, так как есть методы для чередования цвета строки и еще много чего. Есть ли простой способ сделать это без подкласса делегата таблицы?

Риторический вопрос: Я просто хочу изменить цвет строки, мне действительно нужен целый новый класс для этого?

Ответы [ 2 ]

5 голосов
/ 19 февраля 2011

Я считаю, что с помощью QTableWidget самый простой способ установить цвет строки - это перебирать элементы виджета и использовать метод setData для определения цвета фона, см. Пример ниже

for (int column=0; column<4; column++)
{
    for (int row = 0; row<5; row++)
    {
        QTableWidgetItem *newItem = new QTableWidgetItem(tr("%1").arg((row+1)*(column+1)));
        newItem->setData(Qt::BackgroundRole, (row%2)>0 ? Qt::red : Qt::blue);
        ui->tableWidget->setItem(row, column, newItem);
    }
}

если вы хотите упростить его, рассмотрите возможность использования виджета QTableView , реализуйте свою модель (я думаю, самый простой способ - создать подкласс QStandardItemModel ) и удерживать там цвета строк. Реализуйте метод setRowColor или / и слот, чтобы указать цвет для ваших строк данных.

надеюсь, это поможет, с уважением

3 голосов
/ 18 февраля 2011

Вы можете добавить таблицу стилей в свой QTableWidget примерно так:

QTableWidget::item {
    background-color: rgb(255, 85, 127);
}

Вы можете установить этот код следующим образом:

QString _CustomStyle = QString(
      "QTableWidget::item {"
      "background-color: rgba(162, 186, 60);"
      "}";
tableWidget->setStyleSheet(_CustomStyle);

Используйте свой собственный цвет RGB(очевидно).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...