博学的牛肉面 · 如何使用QListView选择在QTable ...· 2 月前 · |
傻傻的课本 · 在qTableView Python ...· 2 月前 · |
追风的投影仪 · QT学习笔记(8)-QDomDocument ...· 3 月前 · |
愤怒的键盘 · pyqt5中QTableView如何实现分页 ...· 5 月前 · |
风度翩翩的豆腐 · Resizing QTableView ...· 5 月前 · |
风流的凳子 · 杭州1小学毕业班集体提交请假条 ...· 2 周前 · |
朝气蓬勃的沙发 · 4.1 Fine Tuning - ...· 1 月前 · |
追风的板凳 · list.stream().filter过滤 ...· 2 月前 · |
聪明伶俐的肉夹馍 · 陈凯歌与杜可风亲密照曝光 ...· 2 月前 · |
力能扛鼎的红酒 · Google震惊密码界,攻破了网络加密的基石 ...· 4 月前 · |
qtableview |
https://cloud.tencent.com/developer/information/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8QListView%E9%80%89%E6%8B%A9%E5%9C%A8QTableView%E4%B8%AD%E6%98%BE%E7%A4%BA%E5%93%AA%E4%BA%9B%E5%88%97 |
博学的牛肉面
2 月前 |
QListView是Qt框架中的一个控件,用于显示列表数据。而QTableView是另一个控件,用于以表格形式显示数据。如果想要在QTableView中选择显示哪些列,可以通过以下步骤实现:
下面是一个示例代码,演示如何使用QListView选择在QTableView中显示哪些列:
// 创建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中显示哪些列了。
博学的牛肉面 · 如何使用QListView选择在QTableView中显示哪些列_如何选择使用OpenXava在列表视图中显示哪些属性?_如何使用pyside2在Qtableview中显示(和格式化)日期时间数据 - 2 月前 |