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