QListWidget

来源:互联网 发布:ubuntu opencv安装 编辑:程序博客网 时间:2024/05/22 10:26

listWidget = QListWidget() #实例化一个(item base)的列表

listWidget.addItem('dd') #添加一个项

listWidget.addItems([]) # 从序列中添加子项

listWidget.setDragEnabled(True) #设置拖拉

listWidget.sortItems() #排序

listWidget.selectAll()全选

listWidget.setSortingEnabled(bool) #设置自动排序

listWidget.setSelectionMode(QtGui.QAbstractItemView.ExtendedSelection) #设置选择模式

选择模式有:ExtendedSelection 按住ctrl多选, SingleSelection 单选 MultiSelection 点击多选 ContiguousSelection 鼠标拖拉多选

listWidget.setCurrentRow(0) 设置当前选择行默认为-1

listWidget.count() #得到子项总数

listWidget.item(row).text() #得到第 row 行的内容 listWidget.item(row) 返回一个item 对象

listWidget.takeItem(row) #返回row 行的所在的item 对象 可以用在 insertItem()中

listWidget.insertItem(2,item) #在第二行插入一项 item 可谓为一个listviewitem对象 或者string

listWidget.setCurrentItem('dd') #设置'dd'为当前项

listWidget.selectedItems() 返回一个包含item对象 的list 对象

修改item 的内容

item.setText('dsds') # 设置item的内容为dsds item为对象 可从 listWidget.item(row) takeItem(row) 得到

 

将listwidget里的列表横向显示:

    setViewMode ()的参数为QListView::IconMode,若为QListView::ListMode,则是一行一行的显示。并且IconMode,列表是可以拖动的,ListMode列表是不能拖动的,如果不想让列表拖动,可以设置setMovement(QListView::Static);

添加item:

         //listWidget显示
         QListWidgetItem *newItem = new QListWidgetItem;
         newItem->setIcon(fileIcon->icon(fi));
         newItem->setText(fi.fileName());
         newItem->setData(Qt::UserRole, fi.absoluteFilePath());
         m_listWidget->addItem(newItem);

删除item:

    m_listWidget->removeItemWidget(item);
    delete item;  //必须加上这一句,不然删除不了

QListWidget中IconMode和ListMode的差别

在使用ListMode的时候,你无法通过
ListWidgetItem->setSizeHint(QSize(155,41));
这种方式修改Item的宽度
需要使用IconMode才可以通过setSizeHint函数修改Item的宽度。

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(QListView::IconMode );//使用图标显示方式
  list.setResizeMode(QListView::Adjust);//设置QListView大小改变时,图标的调整模式,默认是固定的,但可以改成自动调整:
  list.setMovement(QListView::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));
  }

原创粉丝点击