gpt4 book ai didi

qt - 如何调整 QTableView 的大小以使该区域不再滚动

转载 作者:行者123 更新时间:2023-12-03 07:17:17 24 4
gpt4 key购买 nike

我希望 QTableView 的大小与其包含的表格相同(并且固定),以便它没有滚动条

最佳答案

您可以做的是根据表格 View 列的数据计算它们的宽度(或者您可以为每列调用 resizeColumnToContents 来调整其大小以适应其内容)。然后将表格 View 宽度更改为等于或大于列的总宽度+垂直标题(如果显示)。您还需要跟踪模型更改并调整表格 View 宽度+如果显示水平标题,您可以跟踪列调整大小事件并再次调整它们。下面是一些示例代码:

初始化:

// add 3 columns to the tableview control
tableModel->insertColumn(0, QModelIndex());
tableModel->insertColumn(1, QModelIndex());
tableModel->insertColumn(2, QModelIndex());
...
// switch off horizonatal scrollbar; though this is not really needed here
ui->tableView->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
// adjust size; see code below
adjustTableSize();
// connect to the horizontal header resize event (non needed if header is not shown)
connect(ui->tableView->horizontalHeader(),SIGNAL(sectionResized(int,int,int)), this,
SLOT(updateSectionWidth(int,int,int)));
// connect to the model's datachange event
connect(ui->tableView->model(), SIGNAL(dataChanged(QModelIndex,QModelIndex)),
this, SLOT(dataChanged(QModelIndex,QModelIndex)));

调整桌面 View 大小:

void MainWindow::adjustTableSize()
{
ui->tableView->resizeColumnToContents(0);
ui->tableView->resizeColumnToContents(1);
ui->tableView->resizeColumnToContents(2);

QRect rect = ui->tableView->geometry();
rect.setWidth(2 + ui->tableView->verticalHeader()->width() +
ui->tableView->columnWidth(0) + ui->tableView->columnWidth(1) + ui->tableView->columnWidth(2));
ui->tableView->setGeometry(rect);
}

流程模型变更

void MainWindow::dataChanged(const QModelIndex &topLeft, const QModelIndex   &bottomRight)
{
adjustTableSize();
}

处理水平标题调整大小

void MainWindow::updateSectionWidth(int logicalIndex, int, int newSize)
{
adjustTableSize();
}

希望这有帮助,问候

关于qt - 如何调整 QTableView 的大小以使该区域不再滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1850391/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com