我的 QListView 有问题,它在 QListView 的左上角绘制了一个意外项目:
http://s4.postimage.org/64orbk5kd/Screen_Shot_2013_02_14_at_20_23_14.png
我在 QListView 中使用 QStyledItemDelegate :
m_stringList.push_back("FIRST");
m_stringList.push_back("SECOND");
m_stringList.push_back("THIRD");
m_model.setStringList(m_stringList);
ui->processesListView->setFlow(QListView::LeftToRight);
ui->processesListView->setModel(&m_model);
ui->processesListView->setItemDelegate(new ProcessItemDelegate(this, ui->processesListView));
委托 (ProcessItemDelegate) 绘制方法使用自定义 QWidget 来显示信息:
void ProcessItemDelegate::paint ( QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex &inIndex ) const
{
_listItem->setContent(_listView->model()->data(inIndex).toString());
painter->save();
painter->translate(option.rect.center());
_listItem->render(painter);
painter->restore();
}
QWidget 的 setContent 方法非常简单:
void ProcessItem::setContent(const QString &s)
{
ui->processId->setText(s);
}