详解QListView控件
QListView
是 Qt 框架提供的一个用于显示列表数据的控件,属于 Qt 的视图-模型架构中的视图部分。它通常用于显示垂直排列的项目列表,可以与自定义模型配合使用,以便处理不同类型的数据源。以下是 QListView
的一些详细信息和常用操作:
基本功能
- 数据展示:
QListView
用于以列表形式展示数据项,可以是文本、图像或者任何自定义的显示内容。 - 选择模型:支持单选、多选等模式,通过
setSelectionMode()
可以设置选择模式。 - 排序功能:可以通过设置排序模型进行数据排序。
- 自定义渲染:结合自定义的委托(
QStyledItemDelegate
)实现自定义渲染。
使用步骤
创建与设置模型:
- 使用 Qt 提供的模型(如
QStringListModel
、QStandardItemModel
)或者自定义的模型继承自QAbstractListModel
。 - 为此模型添加数据。
- 使用 Qt 提供的模型(如
设置视图:
- 创建
QListView
实例。 - 使用
setModel()
方法将模型应用到视图。
- 创建
显示视图:
- 设置窗口布局,将
QListView
添加到布局中。 - 调用
show()
展示窗口。
- 设置窗口布局,将
代码示例
#include <QApplication>
#include <QListView>
#include <QStringListModel>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
// 创建一个字符串列表模型
QStringListModel *model = new QStringListModel();
QStringList list;
list << "Item 1" << "Item 2" << "Item 3";
model->setStringList(list);
// 创建QListView控件
QListView *view = new QListView();
view->setModel(model); // 绑定模型
// 设置选择模式为多选
view->setSelectionMode(QAbstractItemView::MultiSelection);
// 显示视图
view->show();
return app.exec();
}
常用方法
setModel(QAbstractItemModel *model)
:设置视图的模型。setSelectionMode(QAbstractItemView::SelectionMode mode)
:设置选择模式,如SingleSelection
、MultiSelection
。setViewMode(QListView::ViewMode mode)
:设置视图模式,如ListMode
或IconMode
。setSpacing(int space)
:设置项间间距。setEditTriggers(QAbstractItemView::EditTriggers triggers)
:设置编辑触发方式。
自定义显示
通过自定义的委托,可以控制每个列表项的外观。自定义委托需要继承 QStyledItemDelegate
并重写 paint()
和 sizeHint()
函数。
QListView
是一个功能强大且灵活的控件,适用于节目单、文件浏览器等多种应用场景。通过与模型和委托的配合,可以实现高度自定义和动态响应的数据展示。