как разместить QIcon в элементе таблицы Qt? - PullRequest
0 голосов
/ 03 октября 2018

Мне нужна ячейка таблицы с текстом, выровненным по левому краю, и значком, выровненным по правому краю.

Но теперь, когда я выравниваю и значок, и текст по левому краю, вот что я попробовал

QtTableWidgetItem * item = new QtTableWidgetItem("program");
item -> setIcon(icon);
ui -> tableWidget -> setItem(i,j,item);

1 Ответ

0 голосов
/ 03 октября 2018

Для управления положением значка и текста необходимо использовать делегата, в этом случае я использую 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);

enter image description here

...