首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品, 尽在小程序
立即前往

如何使用QListView选择在QTableView中显示哪些列

QListView是Qt框架中的一个控件,用于显示列表数据。而QTableView是另一个控件,用于以表格形式显示数据。如果想要在QTableView中选择显示哪些列,可以通过以下步骤实现:

  1. 创建一个QListView控件和一个QTableView控件,并将它们添加到主窗口或其他容器中。
  2. 准备数据源,可以是一个列表或者一个二维数组,其中每个元素表示一行数据,每个元素的子元素表示该行的各个列数据。
  3. 将数据源绑定到QListView控件上,可以使用QStandardItemModel或自定义的数据模型。
  4. 在QListView中选择要显示的列,可以通过设置QListView的选择模式为多选模式,并提供一个复选框列表供用户选择。
  5. 根据用户选择的列,更新QTableView的显示。可以通过以下步骤实现: a. 获取用户选择的列索引。 b. 创建一个QStandardItemModel或自定义的数据模型,并设置列数为用户选择的列数。 c. 遍历数据源,将每行中用户选择的列数据添加到新的数据模型中。 d. 将新的数据模型设置为QTableView的模型。
  6. 刷新QTableView,使其显示更新后的数据。

下面是一个示例代码,演示如何使用QListView选择在QTableView中显示哪些列:

代码语言: txt
复制
// 创建QListView和QTableView控件
QListView *listView = new QListView(this);
QTableView *tableView = new QTableView(this);
// 准备数据源
QStandardItemModel *model = new QStandardItemModel(this);
model->setColumnCount(3);
model->setRowCount(5);
model->setHeaderData(0, Qt::Horizontal, "列1");
model->setHeaderData(1, Qt::Horizontal, "列2");
model->setHeaderData(2, Qt::Horizontal, "列3");
for (int row = 0; row < 5; ++row) {
    for (int col = 0; col < 3; ++col) {
        QModelIndex index = model->index(row, col);
        model->setData(index, QString("数据%1-%2").arg(row).arg(col));
// 将数据源绑定到QListView控件
listView->setModel(model);
// 设置QListView的选择模式为多选模式
listView->setSelectionMode(QAbstractItemView::ExtendedSelection);
// 将QListView的选择信号与更新QTableView的槽函数连接
connect(listView->selectionModel(), &QItemSelectionModel::selectionChanged, this, [=]() {
    // 获取用户选择的列索引
    QModelIndexList selectedIndexes = listView->selectionModel()->selectedIndexes();
    QList<int> selectedColumns;
    for (const QModelIndex &index : selectedIndexes) {
        selectedColumns.append(index.column());
    // 创建新的数据模型,并设置列数为用户选择的列数
    QStandardItemModel *newModel = new QStandardItemModel(this);
    newModel->setColumnCount(selectedColumns.size());
    // 遍历数据源,将每行中用户选择的列数据添加到新的数据模型中
    for (int row = 0; row < model->rowCount(); ++row) {
        for (int col : selectedColumns) {
            QModelIndex index = model->index(row, col);
            QString data = model->data(index).toString();
            QModelIndex newIndex = newModel->index(row, newModel->columnCount());
            newModel->setData(newIndex, data);
    // 将新的数据模型设置为QTableView的模型
    tableView->setModel(newModel);
    // 刷新QTableView
    tableView->resizeColumnsToContents();
// 将QListView和QTableView添加到布局中
QVBoxLayout *layout = new QVBoxLayout(this);
layout->addWidget(listView);
layout->addWidget(tableView);
setLayout(layout);

这个示例代码中,首先创建了一个QListView和一个QTableView控件,并准备了一个数据源。然后将数据源绑定到QListView控件上,并设置选择模式为多选模式。接着将QListView的选择信号与更新QTableView的槽函数连接起来,在槽函数中根据用户选择的列索引更新QTableView的显示。最后将QListView和QTableView添加到布局中,并设置为主窗口的布局。

这样,用户就可以通过选择QListView中的列来控制QTableView中显示哪些列了。

相关· 内容

Python Qt GUI设计: QTableView QListView 、QListWidet、QTableWidget、QTreeWidget和QTreeWidgetltem表格和树类(提升篇—1)

目录 1、 QTableView 类 2、 QListView 类 3、QListWidet类 4、QTableWidget类 5、QTreeWidget和QTreeWidgetltem类 表格与树解决的问题是 如何 在一个控件中有规律地呈现更多的数据... QtableView 可以 使用 自定义的数据模型来 显示 内容,通过setModel来绑定数据源。...QTableWidget继承自 QTableView ,主要区别是 QTableView 可以 使用 自定义的数据模型来 显示 内容(先要通过setModel来绑定数据源),而QTableWidget只能 使用 标准的数据模型... QListView 的常用方法如下表所示: QListView 的常用信号如下表所示: 通过示例了解 QListView 类的 使用 方法,效果如下所示: 示例 ,将 QListView 控件的clicked...通过示例了解QTableWidget类的 使用 方法,效果如下所示: 示例 , 构造了一个QTableWidget对象,并且设置表格为4行3

3.8K 3 0

Python Qt GUI设计: QTableView QListView 、QListWidet、QTableWidget、QTreeWidget和QTreeWidgetltem表格和树类(提升篇—1)

目录 1、 QTableView 类 2、 QListView 类 3、QListWidet类 4、QTableWidget类 5、QTreeWidget和QTreeWidgetltem类 表格与树解决的问题是 如何 在一个控件中有规律地呈现更多的数据... QtableView 可以 使用 自定义的数据模型来 显示 内容,通过setModel来绑定数据源。...QTableWidget继承自 QTableView ,主要区别是 QTableView 可以 使用 自定义的数据模型来 显示 内容(先要通过setModel来绑定数据源),而QTableWidget只能 使用 标准的数据模型... QListView 的常用方法如下表所示: QListView 的常用信号如下表所示: 通过示例了解 QListView 类的 使用 方法,效果如下所示: 示例 ,将 QListView 控件的clicked...通过示例了解QTableWidget类的 使用 方法,效果如下所示: 示例 , 构造了一个QTableWidget对象,并且设置表格为4行3

3.1K 2 0

【QT】QT模型视图

模型/视图编程 Qt 的模型/视图架构用来实现大量的数据存储、处理及 显示 。...模型索引QModeIIndex类提供对一块数据的临时引用, 用来修改或检索模型 的数据,获取一个数据项的模型索引必须指定模型的3个属性:行号、 号和父项的模型索引。... QListView 将数据项 显示 为一个列表; QTableView 将模型 的数据 显示 一个表格 ;QTreeView将模型 的数据项 显示 具有层次的列表 。... QTableView 和QTreeView 显示 项目的时候同时还可以 显示 标头,通过QHeaderView类实现。...之所以成为便捷因其用起来比较简单, 使用 于少量的数据的存储和 显示 。因没有将视图与模型分离,所以没有视图类灵活,不能和任意的模型一起 使用 。 通过自定义委托来实现更高级的渲染。

2.9K 2 0

Qt Designer基本控件介绍——Item Views(表项视图)和Item Widgets(部件)

Item Widgets 开发 没有Item Views灵活,实际上Item Widgets就是 Item Views的基础上绑定了一个默认的存储并提供了相关方法。...QListWidget是继承 QListView QListView 是基于model的,需要自己来建模(例如建立QStringListModel、QSqlTableModel等),保存数据,这样就大大降低了数据冗余...)” “QListWidget 和 QListView 的区别” Tree view :视图类,需要手动给他指定模型类,才能够 显示 数据,QTreeView要灵活些。...resizeGripsVisible() const void setResizeGripsVisible(bool visible) Undo View :是命令模式(Command pattern) 的实现,用于 应用程序 实现撤消...详细介绍可看博客: “实战PyQt5: 078-撤销命令视图QUndoView” “Qt 如何 实现 QTableView 的撤消与恢复功能”

6.1K 0 0

PyQt5 高级界面控制(表格、树、tab、dock、scrollbar、多文档界面)

表格与树 1.1 QTableView 1.2 QListView 1.3 QListWidget 1.4 QTableWidget 表根据界面宽度自动伸缩 单击某单元,使之默认选中整行 设置宽高度与内容相匹配...是否 显示 表头 单元格中放置`控件` 输入行号,快速定位行 合并单元格 设置单元格大小 显示 网格线 设置图片、更改图片大小 获取单元格内容 1.5 QTreeView...sys.argv) main = listViewDemo() main.show() sys.exit(app.exec_()) 1.3 QListWidget 用于从列表 添加删除条目...300宽 tablewidget.setRowHeight(0, 150) # 0行 150高 显示 网格线 # 不 显示 分割线 tablewidget.setShowGrid(False) 设置图片、...on_tree_clicked(self): item = self.tree.currentItem() print(item.text(0), item.text(1)) 系统定制模式 使用

6.5K 2 0

Qt QListWidget详解

行后添加一项item QListWidgetItem * item(int row) // row行的项 QListWidgetItem *takeItem(int row) //删除第row行的项,...注意qt不会给你释放内存,需要手动释放,只会从界面上删除该项 void clear() //清空界面 void setAlternatingRowColors(bool) //设置是否开启交替颜色 显示 ...) //鼠标进入某项发出信号 void itemPressed(QListWidgetItem *item) //鼠标按住某项发出信号 void itemSelectionChanged() //改变 选择 项时发出信号...row); //移除指定行的项,但不delete //delete aItem; //需要手工删除对象 //takeItem() 函数只是移除一个项,并不删除项对象,所以还需要用 delete 从内存 删除它...article/details/109996501 QTableWidget详解 https://blog.csdn.net/wzz953200463/article/details/110004261 QTableView

1.8K 2 0

QTableView + QStandardItemModel模式 显示 表格冻结 (模板)

使用 QStandardItemModel,你可以轻松地将数据填充到表格 ,并通过行和 索引访问和修改数据。... QTableView ,QStandardItem 作为数据模型 的基本元素,负责展示和编辑表格 的数据。通过操作 QStandardItem,你可以实现对表格数据的增删改查等操作。... QTableView QListView 等控件 ,QModelIndex 用来唯一标识模型 的一个元素,以便于获取和操作该元素的数据。QModelIndex 的主要作用包括:1. ...操作元素:通过 QModelIndex 可以对模型 对应元素进行操作,例如修改文本内容或更改图片资源。 使用 QModelIndex 时,需要注意以下几点:1. ...QModelIndex 是一个轻量级对象,可以 多个地方传递和 使用 ,而不会增加内存开销。2. QModelIndex 不包含任何数据本身,它只是一个指向模型 某个节点的指针。

66 1 0

静态住宅代理有 哪些 作用? 众多海外http代理 如何 选择 购买ip?

其中,会 使用 静态住宅代理等方式来保护自己的网络安全和隐私已成为越来越多人的 选择 。那么,静态住宅代理有 哪些 作用? 众多海外http代理 如何 选择 购买ip?一、静态住宅代理有 哪些 作用?... 某些场合下, 使用 静态住宅代理可以帮助用户规避一些网站的反爬虫机制,提高爬虫效率。...静态住宅代理 保障用户隐私和安全的同时,还提供了更加灵活多样的 使用 方式和更全面的全球覆盖。对于需要进行隐秘操作或者对网络安全要求较高的用户来说, 选择 静态住宅代理是一个不错的 选择 。...二、 众多海外http代理 如何 选择 购买ip?(购买ip) 选择 购买ip时,需要考虑多个因素,包括代理的稳定性、速度、可用性、地理位置等。下面是一些 选择 购买ip时需要注意的因素:1.稳定性。...因此, 选择 一个稳定的代理服务商是非常重要的。2.速度。速度是 使用 代理时非常重要的考虑因素。代理的速度会影响到整个操作的效率和用户体验。因此, 选择 代理服务商时,应该 选择 提供高速稳定代理的服务商。3.

406 2 0

QTableView 基本用法讲解,Qt表格控件的 使用 方法

QTableView 是Qt中用来把数据集以表格形式提供给用户的一个控件,它与C++Builder 的DBGrid作用类似。坦白的说,DBGrid的 使用 要比 QTableView 更容易一些。...但 QTableView 使用 麻烦的同时,也提供了更多的灵活性。   检索处方项目成功后,把该项目 显示 QTableView 里,把需要编辑的数量字段提供给用户输入,用户输入确认后,该项目留在列表 ,然后开始下一项目检索录入。   ...tb1=newQSqlTableModel(this,*dbR); //dbR是本应用 的数据源 tb1->setTable("tmp"); //处方临时表   程序 需要 显示 的时候,...// 宽 m_ui->tableView->setColumnWidth(0,30); //整行 选择 m_ui->tableView->setSelectionBehavior(QAbstractItemView

14.7K 2 0

C++ Qt开发:StandardItemModel数据模型组件

这个模型提供了一种灵活的方式来组织和管理数据,适用于各种视图类(比如 QTreeView、 QListView QTableView 等)。...model数据集进行绑定,当绑定后,模型 的数据发生变化则会自动刷新到View组件 ,我们就无需关心界面 的组件 如何 显示 了,这个现实过程交给Model映射吧。...如下所示的代码片段是一个 使用 QStandardItemModel 的例子,演示了 如何 创建一个带有表头和初始数据的 QTableView 。...这样,就创建了一个包含表头和数据的 QTableView ,并将其 显示 MainWindow 。...首先, 代码 同样是获取应用程序路径,同样是打开文件唯一不同的是这里 使用 了getSaveFileName也标志着是打开一个保存对话框,这里还 使用 了QFile::Open函数,并设置了QIODevice:

285 1 0

C++ Qt开发:数据库与TableView多组件联动

使用 这些方法,你可以 应用 执行 SQL 查询,并将结果 显示 相应的视图组件 。...这些方法允许你 一个或多个视图中管理 选择 项,进行 选择 的查询、修改,以及处理 选择 变化的信号。通过 使用 这些方法,你可以实现对模型 的项进行灵活的 选择 操作,并及时响应 选择 的变化。...这些方法使得 Qt 应用程序 更容易实现数据模型和用户界面的交互,通过将数据模型字段映射到用户界面的小部件上,实现了数据的 显示 和编辑的同步。... QTableView ,并通过 QDataWidgetMapper 将选中行的数据映射到三个文本框 ,同时通过信号槽机制实现了 底部编辑框 显示 当前选中行的功能。...这样,用户就可以 QListView 中看到与当前表格行对应的地址信息。

476 1 0

PyQT模块、类、控件介绍

QtWidgets模块 包含了一整套UI元素控件,用于建立符合系统风格的Classic界面,非常方便,可以 安装时 选择 是否 使用 此功能。...QtDesigner模块 所包含的类允许 使用 PyQt扩展Qt Designer。 Qt模块 将上面模块 的类综合到一个单一的模块 。...PyQT主要类 QObject类 类层次结构 是顶部类(Top Class),它是所有PyQt对象的基类。 QPaintDevice类 所有可绘制的对象的基类。...控件 可以 显示 和控制可选的多选列表,可以设置ListMode或IconMode QPixmap控件 可以 绘图设备上 显示 图像,通常放在QLabel或QPushButton类 Qdialog控件 对话框窗口的基类... QListView :列表视图 QButtonGroup:按钮组 QScrollBar:滚动区域 QDateEdit:日期编辑框 QFontComboBox:字体 选择 框 QFileSystemModel

481 3 1

【Python】GUI:PyQt5环境搭建与示例

QListView 、容器、多线程等) PyQt5布局管理(QBoxLayout、QGridLayout、QFormLayout、嵌套布局等) PyQt5信号与槽(事件处理、传递数据等) PyQt5图形与特效...下载地址:https://www.python.org/downloads/windows/ cmd 输入python查看版本。...tools 并配置环境变量: D:\Python\Lib\site-packages\pyqt5_tools D:\Python\Lib\site-packages\PyQt5\Qt5\plugins 命令行 输入...配置QtDesigner 如果装了Qt的话,可以 使用 QtDesigner来创建ui界面文件,通过 python 设置外部工具引用,使得 pyqt5工程 可以打开QtDesigner,且可以通过pyuic5...pyuic5的参数调用:-m PyQt5.uic.pyuic FileName -o FileNameWithoutExtension.py 然后就可以 工程中 使用 这两个工具了。 以上。

235 1 0

C++ Qt开发:StringListModel字符串列表映射组件

该组件是用于 Qt 快速 显示 字符串列表的便捷模型类。...然后,通过 ui->listView->setModel(model) 将模型设置到 QListView ,从而使模型 的数据 QListView 显示 。... 使用 setEditTriggers 方法设置了编辑触发器,使得可以通过双击或 选择 项目来触发编辑操作。...这样,通过 QStringListModel 和 QListView 的结合 使用 ,可以很方便地 界面上展示和管理字符串列表的数据。...这样,通过这两个按钮的点击事件,可以向 QStringListModel 添加或插入数据,并在 QListView 中进行 显示

171 1 0

python GUI库图形界面开发之PyQt5表格控件 QTableView 详细 使用 方法与实例

PyQt5表格控件 QTableView 简介 通常情况下,一个应用需要和一批数据进行交互,然后以表格的形式输出这些信息,这时就需要用到 QTableView 类了, QTableView 可以 使用 自定义的数据模型来 显示 内容...,通过setModel来绑定数据源 QTableWidget继承自 QTableView ,主要区别是 QTableView 可以 使用 自定义的数据模型来 显示 内容(先通setModel来绑定数据源),而QTableWidget...自能 使用 标准的数据模型,并且其单元格数据是通过QTableWidgetItem对象实现的,通常QTableWidget就能够满足我们的要求 QTableView 可用的模式 QTableView 控件可以绑定一个模型数据用来更新控件上的内容...QSqlRelationalTableModel 对带有foreign key的SQL表格进行封装 QSortFilterProxyModel 对模型 的数据进行排序或过滤 QTableView 使用 实例...本文主要介绍了PyQt5表格控件 QTableView 详细 使用 方法与实例,更多关于这方面的知识请查看下面的相关链接

5.6K 2 2