加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

转-QTreeView设置行高、图标

(2016-01-12 10:14:49)
标签:

it

分类: 计算机
文一:设置QTreeView的行高、图标:
(转自:http://control.blog.sina.com.cn/admin/article/article_add.php)


    // 样式

    ui->treeView->setStyleSheet(

            "QTreeView::item{height: 60px;show-decoration-selected: 0;background-image:url(image/list_content_bg.png);}"

            "QTreeView::item:selected{background-image:url(image/list_select_bg.png);}"

            );

 

//设置图标

QVariant data(const QModelIndex &index, int role)
{

if (!index.isValid())
    return QVariant();

if(role == Qt::UserRole)
{

}
 if(role ==Qt::BackgroundRole)
{
    QImage  image("image/list_bg02.png");
    return QBrush(image);
}

if(index.column()==0)
{

 

    if(role == Qt::DecorationRole)
    {
        QImage image;
        image.load("image/icon_user.png");
        return image;//QIcon("image/icon_user.png");
    }

}

图标大小  :属性 iconSize

ui->treeView->setIconSize(QSize(32,32));

文二:设置QTreeView的行高:
(转自:)

1. 继承QItemDelegate类, 并重载其中的sizeHint函数, 在sizeHint函数中实现给定行高, 将该继承类的对象通过QTreeView::setItemDelegate方法指定给treeview对象;

这个方法经过实际试验是可行的, 我的Delegate类的sizeHint方法如下:

 

  1. /// \reimp  
  2. QSize MyDelegate::sizeHint const QStyleOptionViewItem option,  
  3.                  const QModelIndex index const  
  4.  
  5.     QSize size QItemDelegate::sizeHint(option, index);  
  6.     size.setHeight( size.height() );  
  7.     return size;  
  8.  

 

2. 第二个方法是在ItemModel的data方法中, 实现当role==Qt::SizeHintRole时, 返回一个特定的QSize对象, 即可实现自定义行高的效果; 如 (这个方法未经实际的程序检验, 仅供参考)

  1. // 重载QAbstractItemModel方法  
  2. QVariant MyModel::data const QModelIndex index, int role const  
  3.  
  4.      switch(role)  
  5.      
  6.     case Qt::SizeHintRole:  
  7.         // 返回单元格尺寸  
  8.         return QSize(16, 35);  
  9.         break 
  10.     case Qt::TextAlignmentRole:  
  11.            ......  
  12.      
  13. }

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有