Как разместить QIcon в элементе таблицы Qt?
Я хочу, чтобы ячейка таблицы была выровнена по левому краю, а значок - по правой стороне.
Но теперь я выровняю значок и текст по левому краю, вот что я попробовал
QtTableWidgetItem * item = new QtTableWidgetItem("program");
item -> setIcon(icon);
ui -> tableWidget -> setItem(i,j,item);
1 ответ
Для управления положением значка и текста необходимо использовать делегата, в этом случае я использую QStyledItemDelegate
и я перезаписываю initStyleOption()
метод:
aligndelegate.h
#ifndef ALIGNDELEGATE_H
#define ALIGNDELEGATE_H
#include <QStyledItemDelegate>
class AlignDelegate: public QStyledItemDelegate{
public:
using QStyledItemDelegate::QStyledItemDelegate;
protected:
void initStyleOption(QStyleOptionViewItem *option, const QModelIndex &index) const override
{
QStyledItemDelegate::initStyleOption(option, index);
option->decorationPosition = QStyleOptionViewItem::Right;
}
};
#endif // ALIGNDELEGATE_H
Затем в делегате устанавливается:
AlignDelegate *delegate = new AlignDelegate(ui->tableWidget);
ui->tableWidget->setItemDelegate(delegate);
QTableWidgetItem *item = new QTableWidgetItem("foo text");
item->setIcon(icon);
ui->tableWidget->setItem(i, j, item);