豪爽的啄木鸟 · qtableview中不可编辑的单元格 - ...· 2 周前 · |
俊秀的小狗 · 深入思考 PyQt ...· 1 年前 · |
大方的烤面包 · 制作 NSIS 安装包时,如何打包 ...· 1 年前 · |
礼貌的鸡蛋 · socket通讯流不关闭接收不到内容_发送端 ...· 1 年前 · |
爽快的钱包 · 关系代数除法,这个是怎么算的,要通俗易懂_百度知道· 1 年前 · |
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 |
博学的牛肉面
4 月前 |
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中显示哪些列了。
爽快的钱包 · 关系代数除法,这个是怎么算的,要通俗易懂_百度知道 1 年前 |