《⾃定义QTreeView表项颜⾊、字体、背景⾊、对齐⽅式》:系列教程之六本⽂属于之⼀,欢迎查看其它⽂章。
在⾃定义model中修改表项item的⽂本颜⾊、字体、背景⾊以及对齐⽅式。
1、TreeModel中data函数修改
⾸先在⾃定义model类TreeModel中,data()中添加处理font、color、Background、TextAlignment4个role处理逻辑。
QVariant TreeModel::data(const QModelIndex &index,int role)const
{
if(!index.isValid())
return QVariant();
TreeItem *item =itemFromIndex(index);
if(role == Qt::DisplayRole)
{
return item->lumn());
}
else if(role == Qt::FontRole)
{
return item->lumn());
}
else if(role == Qt::TextColorRole){
return item->lumn());
}
else if(role == Qt::BackgroundRole){
return item->lumn());
}
else if(role == Qt::TextAlignmentRole){
return item->lumn());
}
return QVariant();
}
2、TreeItem中添加4个获取函数
QVariant TreeItem::getFont(int column)
{
if(column == COLUMN_NAME)
{
QFont f;
f.setBold(true);
return f;
}
return QVariant();
}
QVariant TreeItem::getColor(int column)
{
if(column == COLUMN_PHONE)
{
return QColor(Qt::red);
}
return QVariant();
}
QVariant TreeItem::getBackground(int column)
{
if(row()%2==0)// 偶数⾏
{
return QColor(Qt::lightGray);
}
return QVariant();
}
QVariant TreeItem::getTextAlign(int column)
{
if(column == COLUMN_SEX)
{text align center
return QVariant(Qt::AlignCenter);
}
else if(column == COLUMN_AGE){
return QVariant(Qt::AlignVCenter | Qt::AlignRight);
}
return QVariant();
}
getFont():仅"名称"列⽂本字体为粗体,其余列默认;
getColor():仅"电话"列⽂字颜⾊为红⾊,其余列默认;getBackground():偶数⾏背景⾊为"lightGray",奇数⾏默认;getTextAlign():"性别"列⽂本居中,"年龄"列⽂本居右,其余列默认。
效果:
若对你有帮助,欢迎点赞、收藏、评论,你的⽀持就是我的最⼤动⼒
同时,阿超为⼤家准备了丰富的学习资料,欢迎关注“超哥学编程”,即可领取。本⽂涉及⼯程代码,回复:34ItemFontColor,即可下载。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。