Добавить QIcon в ячейку QTableView - PullRequest
0 голосов
/ 10 июля 2020

Я уже закодировал это для QTableWidget:

void ReadOnlyWindow::addReportIconToRow(const int rowIndex){
    QIcon icon;
    QSize sz(16, 16);

    icon.addPixmap(style()->standardIcon(QStyle::SP_FileDialogEnd).pixmap(sz), QIcon::Normal);

    QTableWidgetItem *iconItem = new QTableWidgetItem();
    iconItem->setText("report");
    iconItem->setIcon(icon);
    iconItem->setFlags(iconItem->flags() & (~Qt::ItemIsEditable));

    ui->homeWorksTable->setItem(rowIndex, REPORT_COLUMN_INDEX, icon);
}

REPORT_COLUMN_INDEX это const int из класса и имеет значение 4.

Я пытаюсь найти узнал, как переписать код, если таблица - это `QTableView`.

Я пытался использовать setItemData() и setData(), но я думаю, что использовал его неправильно, потому что он не работал.

PS: Теперь я хочу сделать это для QTableView, потому что туда легко загрузить таблицу SQLite. Эта часть работает. Еще я добавил еще одну колонку. Теперь мне нужно добавить текст во все строки этого значка столбца (как в моем коде для QTableWidget). Функция там должна быть для одной ячейки и будет реализована в l oop.

1 Ответ

0 голосов
/ 10 июля 2020

, чтобы добавить значок в tableWidget, вы устанавливаете элемент, например, указанный здесь :

, а при определении QTableWidgetItem используйте конструктор, принимающий значок для отображения.

вот краткий пример:

this->ui->myTable->setItem(row, col, new QTableWidgetItem(QIcon(":/resources_to_icon_.png"),"SomeText"));

в вашем коде:

ui->homeWorksTable->setItem(rowIndex, REPORT_COLUMN_INDEX, QTableWidgetItem(icon,"some text");
...