QListView 和 QListWidget
今天搞了一天,终于弄清楚了。
QListView 是基于 Model,而 QListWidget 是基于 Item。这是它们的本质区别。
往 QListView 中添加条目需借助 QAbstractListModel:
如:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QStringListModel* slm =new QStringListModel(this);
QStringList* sl =new QStringList();
sl->append("asdfsadfsa");
sl->append("asdfsadfsa");
sl->append("asdfsadfsa");
slm->setStringList(*sl);
ui->listView->setModel(slm);
delete sl;
}
而在 QListWidget 中添加条目可以直接 additem
如:
QListWidget list;
list.setViewMode(QListWidget::IconMode );
list.setResizeMode(QListWidget::Adjust);
list.setMovement(QListWidget::Static);
for(int i =0; i < 100 ; i ++){
QListWidgetItem *item = new QListWidgetItem(&list);
QStyle::StandardPixmap sp = (QStyle::StandardPixmap)(i % 57);
item->setData(Qt::DecorationRole, qApp->style()-
>standardPixmap(sp).scaled(QSize(16,16), Qt::KeepAspectRatio,
Qt::SmoothTransformation) );
item->setData(Qt::DisplayRole,QObject::tr("Item %1").arg(i));