Qtableview item省略在左侧

博客主要围绕在Qt中设置tablewidgetItem文字时,将省略号从默认的右侧移到左侧的问题展开。介绍了使用代理实现的两种方法,还针对第二种方法中绘制行不高亮的情况,给出了添加代码使其高亮的解决办法。

1 我们在设置tablewidgetItem文字的时候,有时候希望省略号在左侧,而默认的是在右侧,如何解决呢?

  我们尝试设置

TabView->setTextElideMode(Qt::ElideLeft); 设置完后,发现不起作用。

  这时候我们需要使用代理来实现 (两种)

第一种方法  

  strTemp就是原始文字。elidetext 是省略后的文字。

QFont font("Segoe UI",12);
QFontMetrics metrics(font);
 QString elidedText = metrics.elidedText(strTemp, Qt::ElideLeft, option.rect.width());
painter->drawText(option.rect,Qt::AlignCenter,elidedText); 这样就可以省略在左边了

第二种方法  

QStyleOptionViewItem opt = option;
initStyleOption(&opt, index);
opt.displayAlignment = Qt::AlignCenter;
opt.textElideMode    = Qt::ElideLeft;
QApplication::style()->drawItemText( painter, optionRect , opt.displayAlignment|opt.textElideMode, QApplication::palette(), true,elidedText );

这样也实现了,但是可能你会发现,为什么绘制的这行不高亮了,加上下面的代码就高亮了。

 if (option.state & QStyle::State_Selected)
    {
        painter->fillRect(option.rect, option.palette.highlight());
    }

第三种方法

setWordWrap(false);   setTextElideMode(Qt::ElideLeft);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值