• 6318阅读
  • 2回复

QListView代理QQ好友列表问题,求助!!! [复制链接]

上一主题 下一主题
 

只看楼主 倒序阅读 楼主  发表于: 2014-04-12


这个是我实现的一个ListView.
首先我用了一个Widget,把需要的label布局好。所以 现在每一个item都是绘制的paint。
现在遇到一个难题。我需要这个itme的图片label移动。  不知道如何做 求各位大神支招
代码如下:

void MyCustomListViewItemDelegate::paint(QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index) const
{
    _itemWidget->resize(option.rect.size());
    const QStringList str  = index.data().toStringList();
    const QString s = str.at(0);
    const QString s2 = QString("In detail it means %1").arg(str.at(1));
    _itemWidget->_ui.iconLabel->setPixmap(QPixmap("Resources/2.png"));
    _itemWidget->_ui.labelHead->setText(s);
    _itemWidget->_ui.labelDescription->setText(s2);
    //if(index.row() == 1)//我尝试用这个去移动图片label,但结果所有item的图片label 都被move(0,0);
    //{
    //    _itemWidget->_ui.iconLabel->move(0,0);
    //}
    QPalette pal;
    if((option.state & QStyle::State_Selected) == QStyle::State_Selected)//如果选择一个小部件
    {
        pal.setBrush(QPalette::Window,QBrush(QColor(Qt::lightGray)));
    }
    if((option.state & QStyle::State_MouseOver) == QStyle::State_MouseOver)
    {
        pal.setBrush(QPalette::Window,QBrush(QColor(Qt::red)));
    }
    _itemWidget->setPalette(pal);
    
    painter->save();
    painter->translate(option.rect.topLeft());
    _itemWidget->render(painter);
    painter->restore();
}

只看该作者 1楼 发表于: 2014-04-12
已解决!
离线未成年

只看该作者 2楼 发表于: 2014-09-10
这个是我实现的一个ListView.
快速回复
限100 字节
 
上一个 下一个