查看完整版本: [-- QListView代理QQ好友列表问题,求助!!! --]

QTCN开发网 -> 《Qt高级编程》专栏 -> QListView代理QQ好友列表问题,求助!!! [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

调味料来了 2014-04-12 16:17

QListView代理QQ好友列表问题,求助!!!

[attachment=11952]

这个是我实现的一个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();
}

调味料来了 2014-04-12 20:01
已解决!

未成年 2014-09-10 12:05
这个是我实现的一个ListView.


查看完整版本: [-- QListView代理QQ好友列表问题,求助!!! --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled