QListWidget理论总结
- 1. 概念
- 2. 添加列表项
- 3. 列表其他属性
- 4. 常用信号
- 5. 槽函数
- 6. QListWidgetItem 简述
1. 概念
QListWidget 是一个继承自 QListView 的类,其实就是 QListView 的一个很经典的 列表 交互控件,在QListWidget 里面提供了非常方便的基于 每一个 QListWidgetItem 的 管理 类,从添加、选择、删除 列表子Item到 QListWidget 里,都是封装的非常完善的。对于 每一个列表项的样子的话,是得靠QListWidgetItem 自己设置的,比如说文字对齐啊,背景大小、图标之类的。
如果要使用更加灵活的方式的话,最好还是使用 QListView 来显示,QListWidget 也不能显示过量的数据,过量数据的时候性能很不好。也不够灵活,但是一般情况下还是够用的哈。
QListWidget 的构造方法是和普通控件是一样的。
QListWidget *listWidget = new QListWidget(this);
2. 添加列表项
有两种方法可以将Item添加到列表中:
- 可以使用QListWidget 作为其父部件来构造它们
- 或者可以在没有父部件的情况下构造它们并稍后添加到列表中。
如果在构造Item时QListWidget 已存在,则第一种方法更易于使用:
new QListWidgetItem(tr(“Oak”), listWidget);
new QListWidgetItem(tr(“Fir”), listWidget);
new QListWidgetItem(tr(“Pine”), listWidget);
如果您需要将新Item插入到列表中的特定位置,则应在没有父部件的情况下构造它。然后应该使用 insertItem() 函数将其放置在列表中。QListWidget 将获得Item的所有权。
QListWidgetItem *newItem = new QListWidgetItem;
newItem->setText(itemText);
listWidget->insertItem(row, newItem);
对于多个Item,可以改用 insertItems() 。
3. 列表其他属性
QListWidget 的 selectionMode() 方法决定列表中可以同时选择多少个Item。同时 setSelectionMode() 就是来创建复杂的Item选择。
- 列表中的项数是使用 count() 函数确定。
- 要从列表中删除 Item,请使用 takeItem() 。
- 列表中的当前项可以使用 currentItem() 找到,并使用 setCurrentItem() 进行更改。用户还可以通过使用键盘导航或单击其他Item来更改当前Item。
- 是否可用排序用 isSortingEnabled() 来确定,当然可呀用 setSortingEnabled(bool enable) 同样也可以设置
- findItems() 来查找 满足条件的 item
4. 常用信号
信号名 | 含义 |
---|---|
currentItemChanged(QListWidgetItem *current, QListWidgetItem *previous) | 发生选择项切换时 |
currentRowChanged(int currentRow) | 选择项的 选择行数改变时 |
currentTextChanged(const QString ¤tText) | 就是Item 项的文字改变,前提是 Item 可以编辑哈 |
itemActivated(QListWidgetItem *item) | 被激活时发出信号。Item被激活当用户单击或双点击的时候, 这具体是取决于系统配置。当用户按下激活键(在Windows和X11这是返回键,在Mac OS X Command + O) 也会激活。 |
itemChanged(QListWidgetItem *item) | 当item 的数据改变时 ,可能是 文字被编辑了,图标变了,被checkedl了 |
itemClicked(QListWidgetItem *item) | 就是item被单击 |
itemDoubleClicked(QListWidgetItem *item) | 就是item被双击 |
itemEntered(QListWidgetItem *item) | 就是鼠标进入,一般不用 |
itemPressed(QListWidgetItem *item) | 就是item被按下了 |
itemSelectionChanged() | 就是选择项的时候发生改变了,一般会配合 selectedItems() 来获取被选择的对象。 |
5. 槽函数
信号名 | 含义 |
---|---|
clear() | 移除所有的Item |
scrollToItem() | 让 列表滚动到指定的 Item 项的位置,一般会和 Search 的时候 配合使用 |
6. QListWidgetItem 简述
QListWidgetItem 表示 QListWidget 中的单个Item。每个Item可以包含多条信息,并将适当地显示它们。
其实知道 QListWidgetItem 能显示并编辑文本、还能check 就够用了。
QListWidgetItem 通常用于显示 文本 text() 和 图标 icon () 。这些是使用 setText() 和 setIcon() 函数设置的。文本的外观可以使用 setFont() 、setForeground() 和 setBackground() 进行自定义。列表项中的文本可以使用 setTextAlignment() 函数对齐。工具提示、状态提示和“这是什么?”帮助可以添加到使用 setToolTip() 、setStatusTip() 和 setWhatsThis() 的列表项中。
默认情况下,Item是 enabled, selectable, checkable的,并且配置 成可拖放、可编辑、可点击 check 的。这都是属于Item 的标志。
每个Item的标志可以通过使用适当的值调用setFlags() 来更改(参见Qt::ItemFlags)。可以使用 setCheckState() 函数检查、取消选中和部分检查可检查的Item。相应的 checkState() 函数指示Item的当前检查状态。
常用的标志像下面
标志名 | 含义 |
---|---|
Qt::NoItemFlags | 完全禁用 |
Qt::ItemIsSelectable | item可被选中 |
Qt::ItemIsEditable | item可被编辑 |
Qt::ItemIsDragEnabled | item可被 拖住 |
Qt::ItemIsDropEnabled | item可被 放置 |
Qt::ItemIsUserCheckable | item可用 check 的类似 QCheckBox |
Qt::ItemIsEnabled | item可用不 |
isHidden() 函数可用于确定Item是否隐藏。要隐藏Item,请使用 setHidden() 。