QListWidget 类

The QListWidget 类提供了一个基于项的列表小部件。 更多...

头文件 #include <QListWidget>
CMakefind_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmakeQT += widgets
继承 QListView

属性

公共函数

QListWidget(QWidget *parent = nullptr)
virtual~QListWidget()
voidaddItem(const QString &label)
voidaddItem(QListWidgetItem *item)
voidaddItems(const QStringList &labels)
voidclosePersistentEditor(QListWidgetItem *item)
intcount() const
QListWidgetItem *currentItem() const
intcurrentRow() const
voideditItem(QListWidgetItem *item)
QListfindItems(const QString &text, Qt::MatchFlags flags) const
QModelIndexindexFromItem(const QListWidgetItem *item) const
voidinsertItem(int row, QListWidgetItem *item)
voidinsertItem(int row, const QString &label)
voidinsertItems(int row, const QStringList &labels)
boolisPersistentEditorOpen(QListWidgetItem *item) const
boolisSortingEnabled() const
QListWidgetItem *item(int row) const
QListWidgetItem *itemAt(const QPoint &p) const
QListWidgetItem *itemAt(int x, int y) const
QListWidgetItem *itemFromIndex(const QModelIndex &index) const
QWidget *itemWidget(QListWidgetItem *item) const
QListitems(const QMimeData *data) const
voidopenPersistentEditor(QListWidgetItem *item)
voidremoveItemWidget(QListWidgetItem *item)
introw(const QListWidgetItem *item) const
QListselectedItems() const
voidsetCurrentItem(QListWidgetItem *item)
voidsetCurrentItem(QListWidgetItem *item, QItemSelectionModel::SelectionFlags command)
voidsetCurrentRow(int row)
voidsetCurrentRow(int row, QItemSelectionModel::SelectionFlags command)
voidsetItemWidget(QListWidgetItem *item, QWidget *widget)
voidsetSortingEnabled(bool enable)
voidsortItems(Qt::SortOrder order = Qt::AscendingOrder)
QListWidgetItem *takeItem(int row)
QRectvisualItemRect(const QListWidgetItem *item) const

重新实现的公共函数

虚函数setSelectionModel(QItemSelectionModel *selectionModel) 覆盖

公共槽

voidclear()
voidscrollToItem(const QListWidgetItem *item, QAbstractItemView::ScrollHint hint = EnsureVisible)

信号

voidcurrentItemChanged(QListWidgetItem *current, QListWidgetItem *previous)
voidcurrentRowChanged(int currentRow)
voidcurrentTextChanged(const QString &currentText)
voiditemActivated(QListWidgetItem *item)
voiditemChanged(QListWidgetItem *item)
voiditemClicked(QListWidgetItem *item)
voiditemDoubleClicked(QListWidgetItem *item)
voiditemEntered(QListWidgetItem *item)
voiditemPressed(QListWidgetItem *item)
voiditemSelectionChanged()

受保护的函数

虚函数dropMimeData(int index, const QMimeData *data, Qt::DropAction action)
虚函数mimeData(const QList<QListWidgetItem *> &items) const
虚函数mimeTypes() const
虚函数supportedDropActions() const

重新实现的受保护函数

虚函数dropEvent(QDropEvent *event) 覆盖
虚函数event(QEvent *e) 覆盖

详细描述

QListWidget 类是一个便利类,提供了类似 QListView 提供的列表视图,但具有基于项的经典接口来添加和删除项。QListWidget 使用内部模型来管理列表中的每个 QListWidgetItem

对于更灵活的列表视图小部件,请使用 QListView 类与标准模型一起。

列表小部件的构造方式与其他小部件相同

    QListWidget *listWidget = new QListWidget(this);

列表小部件的 selectionMode() 决定了列表中可以同时选择多少个项,以及是否可以创建项目的复杂选择。这可以通过 setSelectionMode() 函数设置。

向列表中添加项目的两种方法:它们可以作为父部件使用列表小部件构建,或者在没有父部件的情况下构建,然后稍后添加到列表中。如果项目构建时已经存在列表小部件,则第一种方法更容易使用

    new QListWidgetItem(tr("Oak"), listWidget);
    new QListWidgetItem(tr("Fir"), listWidget);
    new QListWidgetItem(tr("Pine"), listWidget);

如果您需要将新项目插入到列表的特定位置,则应构建不带父部件的项目。然后可以使用 insertItem() 函数将其放置在列表中。列表小部件将拥有该项目的所有权。

    QListWidgetItem *newItem = new QListWidgetItem;
    newItem->setText(itemText);
    listWidget->insertItem(row, newItem);

对于多个项目,可以使用 insertItems()代替。列表中的项目数量可以通过 count() 函数找到。要删除列表中的项目,请使用 takeItem()。

可以使用 currentItem() 查找列表中的当前项目,并使用 setCurrentItem() 更改当前项目。用户还可以通过键盘导航或在不同的项目上单击来更改当前项目。当前项目更改时,将发出currentItemChanged()信号,其中包含新的当前项目以及先前为当前的项目。

另请参阅QListWidgetItemQListViewQTreeView模型/视图编程选项卡对话框示例

属性文档

[只读] count : const int

此属性保存列表中包括任何隐藏项目的项目数。

访问函数

intcount() const

currentRow : int

此属性保存当前项目的行。

根据当前的选取模式,行也可能被选择。

访问函数

intcurrentRow() const
voidsetCurrentRow(int row)
voidsetCurrentRow(int row, QItemSelectionModel::SelectionFlags command)

通知信号

voidcurrentRowChanged(int currentRow)

sortingEnabled : bool

此属性保存是否启用排序。

如果此属性为 true,则对于列表启用排序;如果属性为 false,则不启用排序。

默认值是 false。

访问函数

boolisSortingEnabled() const
voidsetSortingEnabled(bool enable)

成员函数文档

[显式] QListWidget::QListWidget(QWidget *parent = nullptr)

使用给定的 parent 构造一个空的 QListWidget。

[虚拟 noexcept] QListWidget::~QListWidget()

销毁列表小部件及其所有项目。

void QListWidget::addItem(const QString &label)

在列表小部件的末尾插入带文本 label 的项目。

void QListWidget::addItem(QListWidgetItem *item)

在列表小部件的末尾插入 item

警告: QListWidgetItem 只能向QListWidget添加一次。将相同的QListWidgetItem多次添加到QListWidget中会导致行为未定义。

另请参阅 insertItem().

void QListWidget::addItems(const QStringList &labels)

将带有文本 labels 的项插入到列表窗口的末尾。

另请参阅 insertItems().

[slot] void QListWidget::clear()

从视图中删除所有项和选择。

警告: 所有项都将被永久删除。

void QListWidget::closePersistentEditor(QListWidgetItem *item)

关闭给定 item 的持久编辑器。

另请参阅 openPersistentEditor() 和 isPersistentEditorOpen().

QListWidgetItem *QListWidget::currentItem() const

返回当前项。

另请参阅 setCurrentItem().

[signal] void QListWidget::currentItemChanged(QListWidgetItem *current, QListWidgetItem *previous)

每次当前项变化时都会发射此信号。

previous 是之前有焦点的项;current 是新的当前项。

[signal] void QListWidget::currentRowChanged(int currentRow)

每次当前项变化时都会发射此信号。

currentRow 是当前项的行。如果没有当前项,则 currentRow 为 -1。

注意: currentRow 属性的通知器信号。

[signal] void QListWidget::currentTextChanged(const QString &currentText)

每次当前项变化时都会发射此信号。

currentText 是当前项中的文本数据。如果没有当前项,则 currentText 无效。

[override virtual protected] void QListWidget::dropEvent(QDropEvent *event)

重写:QListView::dropEvent(QDropEvent *event).

[virtual protected] bool QListWidget::dropMimeData(int index, const QMimeData *data, Qt::DropAction action)

处理外部拖拽操作的提供的数据 data,该操作在指定的 indexaction 下结束。如果模型可以处理数据 data 和操作 action,则返回 true;否则返回 false

另请参阅 supportedDropActions().

void QListWidget::editItem(QListWidgetItem *item)

如果可编辑,开始编辑条目

[重写虚拟受保护] bool QListWidget::event(QEvent *e)

重新实现了: QListView::event(QEvent *e).

QList<QListWidgetItem *> QListWidget::findItems(const QString &text, Qt::MatchFlags flags) const

使用给定的标志查找与文本text匹配的条目。

QModelIndex QListWidget::indexFromItem(const QListWidgetItem *item) const

返回与给定item关联的QModelIndex

注意: 在 Qt 版本 5.10 之前,此函数接受一个非const item

void QListWidget::insertItem(int row, QListWidgetItem *item)

在列表中根据row给定的位置插入item

另请参阅 addItem().

void QListWidget::insertItem(int row, const QString &label)

在列表小部件的row指定位置插入具有文本label的条目。

另请参阅 addItem().

void QListWidget::insertItems(int row, const QStringList &labels)

从包含labels的列表中插入条目到列表中,从指定的row处开始。

另请参阅 insertItem() 和 addItem().

bool QListWidget::isPersistentEditorOpen(QListWidgetItem *item) const

返回是否为item打开了持久性编辑器。

另请参阅 openPersistentEditor() 和 closePersistentEditor().

QListWidgetItem *QListWidget::item(int row) const

如果设置了一个条目且它占据了列表中的给定row,则返回该条目;否则返回 nullptr

另请参阅 row().

[信号] void QListWidget::itemActivated(QListWidgetItem *item)

item被激活时,会发出此信号。当用户单击或双击该项时,该项将被激活,这取决于系统配置。当用户按下激活键(在Windows和X11上这是返回键,在Mac OS X上这是Command+O)时,也会被激活。

QListWidgetItem *QListWidget::itemAt(const QPoint &p) const

返回coords为p的项的指针。坐标相对于列表小部件的可视窗口

QListWidgetItem *QListWidget::itemAt(int x, int y) const

这是一个重载函数。

返回coords为(xy)的项的指针。坐标相对于列表小部件的可视窗口

[信号] void QListWidget::itemChanged(QListWidgetItem *item)

item的数据更改时,会发出此信号。

[信号] void QListWidget::itemClicked(QListWidgetItem *item)

当在组件中的项上单击鼠标按钮时,会发出带有指定item的此信号。

另请参阅itemPressed()和itemDoubleClicked()。

[信号] void QListWidget::itemDoubleClicked(QListWidgetItem *item)

当在组件中的项上双击鼠标按钮时,会发出带有指定item的此信号。

另请参阅itemClicked()和itemPressed()。

[信号] void QListWidget::itemEntered(QListWidgetItem *item)

当鼠标光标进入一个项时,会发出此信号。该项item是被进入的项。此信号仅在打开鼠标跟踪或当鼠标光标移动到项内时按下鼠标按钮时发出。

另请参阅QWidget::setMouseTracking

QListWidgetItem *QListWidget::itemFromIndex(const QModelIndex &index) const

返回与给定index关联的QListWidgetItem的指针。

[信号] void QListWidget::itemPressed(QListWidgetItem *item)

当在组件中的项上按下鼠标按钮时,会发出带有指定item的此信号。

另请参阅itemClicked()和itemDoubleClicked()。

[信号] void QListWidget::itemSelectionChanged()

当选择发生变化时,会发射此信号。

另请参阅 selectedItems(), QListWidgetItem::isSelected(), 以及 currentItemChanged().

QWidget *QListWidget::itemWidget(QListWidgetItem *item) const

返回给定 item 中显示的小部件。

另请参阅 setItemWidget() 和 removeItemWidget().

QList<QListWidgetItem *> QListWidget::items(const QMimeData *data) const

返回包含在 data 对象中的项目的指针列表。如果该对象不是由同一进程中的 QListWidget 创建的,则列表为空。

[虚受保护] QMimeData *QListWidget::mimeData(const QList<QListWidgetItem *> &items) const

返回一个包含指定 items 的序列化描述的对象。用于描述项目的格式从 mimeTypes() 函数中获取。

如果项目列表为空,则返回空指针而不是序列化空列表。

[虚受保护] QStringList QListWidget::mimeTypes() const

返回可以用来描述列表项列表的 MIME 类型列表。

另请参阅 mimeData().

void QListWidget::openPersistentEditor(QListWidgetItem *item)

为给定的 item 打开一个编辑器。编辑后编辑器保持打开状态。

另请参阅 closePersistentEditor() 和 isPersistentEditorOpen().

void QListWidget::removeItemWidget(QListWidgetItem *item)

移除给定 item 上设置的小部件。

要完全从列表中删除项(行),可以删除该项或将 takeItem() 使用。

另请参阅 itemWidget() 和 setItemWidget().

int QListWidget::row(const QListWidgetItem *item) const

返回包含给定 item 的行。

另请参阅 item().

[slot] void QListWidget::scrollToItem(const QListWidgetItem *item, QAbstractItemView::ScrollHint hint = EnsureVisible)

如果需要,则滚动视图以确保item可见。

hint指定在操作后item应位于的位置。

QList<QListWidgetItem *> QListWidget::selectedItems() const

返回列表控件中所有选中项的列表。

void QListWidget::setCurrentItem(QListWidgetItem *item)

将当前项设置为item

除非选择模式是NoSelection,否则该项也将被选中。

另请参阅 currentItem()。

void QListWidget::setCurrentItem(QListWidgetItem *item, QItemSelectionModel::SelectionFlags command)

使用给定的command将当前项设置为item

void QListWidget::setCurrentRow(int row, QItemSelectionModel::SelectionFlags command)

使用给定的command,将当前行设置为给定的row

注意:这是属性currentRow的设置器函数。

void QListWidget::setItemWidget(QListWidgetItem *item, QWidget *widget)

设置在给定的item中显示的widget

此函数应仅用于在列表控件项的位置显示静态内容。如果您想显示自定义动态内容或实现自定义编辑器小部件,请改用QListView并子类QStyledItemDelegate

另请参阅 itemWidget()、removeItemWidget()和委托类

[override virtual] void QListWidget::setSelectionModel(QItemSelectionModel *selectionModel)

重写了:QAbstractItemView::setSelectionModel(QItemSelectionModel *selectionModel).

void QListWidget::sortItems(Qt::SortOrder order = Qt::AscendingOrder)

根据指定的order对列表控件中的所有项目进行排序。

[virtual protected] Qt::DropActions QListWidget::supportedDropActions() const

返回此视图支持的拖放操作。

另请参阅 Qt::DropActions.

QListWidgetItem *QListWidget::takeItem(int row)

从列表视图中移除并返回指定 row 的项目;否则返回 nullptr

从列表视图中移除的项目将由 Qt 管理并需要手动删除。

另请参阅 insertItem() 和 addItem().

QRect QListWidget::visualItemRect(const QListWidgetItem *item) const

返回占据在 item 的视口上的矩形。

© 2024 Qt 公司有限公司。此处包含的文档贡献的版权属于其各自的拥有者。此处提供的文档是根据自由软件基金会发布的、遵循 GNU 自由文档许可协议版本 1.3 的条款提供的。Qt 以及相应的商标是芬兰的 Qt 公司及其在其他国家/地区的商标。所有其他商标均为其各自所有者的财产。