【发布时间】:2016-08-17 11:15:15
【问题描述】:
我的树模型中有两个项目,我的文本对齐方式差异很小。这是由文本的宽度引起的,但我使用 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));
输出:
宽度 1153
宽度 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);
}
现在问题是绘制发生在错误的区域,因为从图像中您可以看到数据被绘制在根项的顶部。任何线索我在这里缺少什么。
新输出:
【问题讨论】:
标签: qt qtreeview qfontmetrics