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

被折叠的 条评论
为什么被折叠?



