Qt入门系列开发教程高级控件篇QListWidget列表小部件
Posted 鱼酱2333
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt入门系列开发教程高级控件篇QListWidget列表小部件相关的知识,希望对你有一定的参考价值。
效果图
描述
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() 信号与新的当前项目和之前的当前项目一起发出。
另请参阅 QListWidgetItem、QListView、QTreeView、模型/视图编程和选项卡对话框示例。
属性
- count : const int数目
- currentRow : int当前行
- sortingEnabled : bool 排序是否开启
API
//添加item
void addItem(const QString &label)
void addItem(QListWidgetItem *item)
void addItems(const QStringList &labels)
//关闭编辑
void closePersistentEditor(QListWidgetItem *item)
//条数
int count() const
//当前item
QListWidgetItem *currentItem() const
//当前行数
int currentRow() const
//编辑item
void editItem(QListWidgetItem *item)
//查找item们
QList<QListWidgetItem *> findItems(const QString &text, Qt::MatchFlags flags) const
//插入item
void insertItem(int row, QListWidgetItem *item)
void insertItem(int row, const QString &label)
void insertItems(int row, const QStringList &labels)
//是否开启编辑
bool isPersistentEditorOpen(QListWidgetItem *item) const
//是否开启排序
bool isSortingEnabled() const
//通过行数获取item
QListWidgetItem *item(int row) const
//通过点获取item
QListWidgetItem *itemAt(const QPoint &p) const
QListWidgetItem *itemAt(int x, int y) const
//返回给定项目中显示的小部件。
QWidget *itemWidget(QListWidgetItem *item) const
//开启编辑
void openPersistentEditor(QListWidgetItem *item)
//删除给定项目上设置的小部件。
void removeItemWidget(QListWidgetItem *item)
//获取item行
int row(const QListWidgetItem *item) const
//选择的item们
QList<QListWidgetItem *> selectedItems() const
//设置当前item
void setCurrentItem(QListWidgetItem *item)
void setCurrentItem(QListWidgetItem *item, QItemSelectionModel::SelectionFlags command)
//设置当前行
void setCurrentRow(int row)
//设置当前行,选择模型的更新方式。
void setCurrentRow(int row, QItemSelectionModel::SelectionFlags command)
//设置要在给定项目中显示的小部件。
void setItemWidget(QListWidgetItem *item, QWidget *widget)
//开启排序
void setSortingEnabled(bool enable)
//排序item
void sortItems(Qt::SortOrder order = Qt::AscendingOrder)
//从列表小部件的给定行中删除并返回项目; 否则返回 nullptr。
QListWidgetItem *takeItem(int row)
//返回视口上由 item 处的项目占用的矩形。
QRect visualItemRect(const QListWidgetItem *item) const
公有虚槽函数
virtual void dropEvent(QDropEvent *event) override
virtual void setSelectionModel(QItemSelectionModel *selectionModel) override
公有槽函数
//清空视图
void clear()
//必要时滚动视图以确保项目可见。
void scrollToItem(const QListWidgetItem *item, QAbstractItemView::ScrollHint hint = EnsureVisible)
信号
//每当当前项目更改时,都会发出此信号。
void currentItemChanged(QListWidgetItem *current, QListWidgetItem *previous)
//每当当前项目更改时,都会发出此信号。
void currentRowChanged(int currentRow)
//每当当前项目文本更改时,都会发出此信号。
void currentTextChanged(const QString ¤tText)
//该信号在物品被激活时发出
void itemActivated(QListWidgetItem *item)
//每当 item 的数据发生更改时,都会发出此信号。
void itemChanged(QListWidgetItem *item)
//当鼠标按钮单击窗口小部件中的项目时,该信号与指定项目一起发出。
void itemClicked(QListWidgetItem *item)
//当鼠标按钮双击窗口小部件中的项目时,该信号与指定项目一起发出。
void itemDoubleClicked(QListWidgetItem *item)
//当鼠标光标进入项目时发出此信号。 item 是输入的项目
void itemEntered(QListWidgetItem *item)
//当在窗口小部件中的项目上按下鼠标按钮时,将与指定项目一起发出此信号。
void itemPressed(QListWidgetItem *item)
//item选择变化
void itemSelectionChanged()
以上是关于Qt入门系列开发教程高级控件篇QListWidget列表小部件的主要内容,如果未能解决你的问题,请参考以下文章
Qt入门系列开发教程高级控件篇QTreeWidget树形小部件
Qt入门系列开发教程高级控件篇QTableWidget表格小部件