调味料来了 |
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(); } |
|