
void QListWidget::setItemWidget(QListWidgetItem * item, QWidget * widget)
Sets the widget to be displayed in the given item.
This function should only be used to display static content in the place of a list widget item. If you want to display custom dynamic content or implement a custom editor widget, use QListView and subclass QItemDelegate instead.
上面的翻译:
该函数应该只用来在一个list widget item位置显示静态内容。如果你想要显示自定义动态内容或实现一个自定义编辑控件,使用QListView和子类化QItemDelegate代替。
往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 =0i <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))
}
我们可以通过信号和槽的方式对列表控件的选项进行响应,例如
connect(list, SIGNAL(currentTextChanged(QString)), this, SLOT(setText(QString)))
总之,QListWidget是继承QListView,QListView是基于model的,需要自己来建模(例如建立QStringListModel、QSqlTableModel等),保存数据,这样就大大降低了数据冗余,提高了程序的效率,但是需要我们对数据建模有一定了解,初学者就先不要考虑了,而QListWidget是一个升级版本的QListView,它已经自己为我们建立了一个数据存储模型(QListWidgetItem), *** 作方便,直接调用addItem即可添加项目(ICON,文字)。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)