我想要一个表格单元格,它的文本对左对齐,图标对齐右边。
但是现在,我把图标和文本放在一起,这是我尝试过的
QtTableWidgetItem * item = new QtTableWidgetItem("program");
item -> setIcon(icon);
ui -> tableWidget -> setItem(i,j,item);发布于 2018-10-03 03:48:16
要管理图标和文本的位置,必须使用委托,在这种情况下,我使用QStyledItemDelegate并覆盖initStyleOption()方法:
C++版本
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);

Python版本:
class AlignDelegate(QtWidgets.QStyledItemDelegate):
def initStyleOption(self, option, index):
super().initStyleOption(option, index)
option.decorationPosition = QtWidgets.QStyleOptionViewItem.Rightdelegate = AlignDelegate(view)
view.setItemDelegate(delegate)https://stackoverflow.com/questions/52619196
复制相似问题