我的树模型中有两个项目我的文本对齐方式差异很小。这是由文本的宽度引起的,但我使用 QFontMetrics::width() 检查了文本的宽度,但两个文本都是相同的。
文本1:111601756
文本2:999999996
从图像中您可以看到第二个文本中存在轻微的对齐问题。
这是我尝试过的示例代码:-
QFont font("times",24);
QFontMetrics metrics(font);
qDebug() << "Width 1" << metrics.width(QString::number(111111111));
qDebug() << "Width 2" << metrics.width(QString::number(999999999));
输出:
宽度 1 153
宽度 2 153
MyDelegate 绘画功能:-
void LiDefaultTreeDelegate::paint(QPainter *painter, const
QStyleOptionViewItem &option, const QModelIndex &index) const
{
QStyleOptionViewItem newOption = option;
if(index.data(Qt::DisplayRole).toString() != NULL)
{
QString text = index.data(Qt::DisplayRole).toString();
QFontMetrics fnMetrics(fn);
newOption.rect = fnMetrics.boundingRect(text);
//Case 1
//newOption.rect.setWidth(fnMetrics.width(text));
//Case 2
//newOption.rect.setWidth(fnMetrics.width('0') * option.rect.width());
}
QStyledItemDelegate::paint(painter, newOption, index);
}
现在的问题是绘制发生在错误的区域,因为从图像中您可以看到数据被绘制在根项的顶部。任何线索我在这里缺少什么。
新输出: