QTQtablewidget 与Qtableview填充数据哪个快

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QTQtablewidget 与Qtableview填充数据哪个快相关的知识,希望对你有一定的参考价值。

最好有Qtableview.setModel的源码或者分析
或者几千条数据会不会让Qtablewidget刷新起来有明显的卡顿

参考技术A 这多数据明显不可能一次展示在屏幕上,为什么不做分页处理呢,一次只显示二三十条就可以了,需要的时候再翻页或者无缝翻页之类都是可以的。本回答被提问者采纳

Qt QTableWidget 列调整大小

【中文标题】Qt QTableWidget 列调整大小【英文标题】:Qt QTableWidget Column resizing 【发布时间】:2013-03-28 15:57:07 【问题描述】:

我有一个带有 QToolbarQWidget 和一个 QTabWidgetMainWindow。布局是“网格”。但是,我的窗口是可调整大小的,因为我有一个布局,所以效果很好。但是有一个问题,在我的 QTabWidget 中,我有一个 QTableWidget 有两列(布局也是“网格”)。如果我调整整个窗口的大小,QTableWidget 会调整大小,但不会调整列。

例如,每当我调整窗口大小时,我的 QTabWidget 都会调整大小,其中的 QTableWidget 也会随之调整。只有我的 QTableWidget 中的列不会。

那么...如果我的 QTableWidget 调整大小,我该如何调整它们的大小?

【问题讨论】:

【参考方案1】:
    更改QHeaderViewResizeMode。例如,使用:

horizontalHeader()->setResizeMode( 0, QHeaderView::Stretch );

调整第一列的大小,使QTableWidget 总是满的。


    覆盖resizeEvent 并在调整QTableWidget 的大小时自行设置每列的宽度。

【讨论】:

在哪个函数中设置horizo​​ntalheader? "表格可以有水平和垂直标题。创建标题的最简单方法是向 setHorizo​​ntalHeaderLabels() 和 setVerticalHeaderLabels() 函数提供字符串列表。"请参阅QTableWidget details 在 QT5 中:horizo​​ntalHeader()->setResizeMode(0, QHeaderView::Stretch); Qt5中没有,它是horizo​​ntalHeader()->setSectionResizeMode(0, QHeaderView::Stretch); setResizeMode() 方法不存在。【参考方案2】:

    拉伸最后一列:

    ui->tableWidget->horizontalHeader()->setStretchLastSection(true);
    

    拉伸列#n

    ui->tableWidget->horizontalHeader()->setSectionResizeMode(n, QHeaderView::Stretch);
    

【讨论】:

【参考方案3】:

最好的解决方案,在 Qt5 中你必须使用 setSectionResizeMode 而不是 setResizeMode

tabv = QTableView()
tabv.horizontalHeader().setSectionResizeMode(QHeaderView::Stretch)

您也可以在调整大小时指定Stretch 模式

tabv.horizontalHeader().resizeSections(QHeaderView::Stretch)

【讨论】:

【参考方案4】:
ui->mytable->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);

【讨论】:

避免只使用代码的答案,它们通常被标记为低质量并被删除。试着在你的答案中付出一些努力,并解释代码的作用以及它将如何应用于原始问题。【参考方案5】:

如果您只想调整最后一列的大小:

ui->tableWidget->horizontalHeader()->setStretchLastSection(1);

【讨论】:

【参考方案6】:

您可以使用 QHeaderView 和方法 QHeaderView::setResizeMode() 更改列或行的“调整大小模式”。

http://qt-project.org/doc/qt-4.8/qheaderview.html#setResizeMode

http://qt-project.org/doc/qt-4.8/qtableview.html#verticalHeader

http://qt-project.org/doc/qt-4.8/qtableview.html#horizontalHeader

【讨论】:

【参考方案7】:

在 Qt5 中,您必须使用 setSectionResizeMode 而不是 setResizeMode

QTableWidget* myTable = new QTableWidet;
QHeaderView* header = myTable->horizontalHeader();
header->setSectionResizeMode(QHeaderView::Stretch);

【讨论】:

以上是关于QTQtablewidget 与Qtableview填充数据哪个快的主要内容,如果未能解决你的问题,请参考以下文章

QTableView和QTableWidget翻页功能实现

返回 QComboBox 中的多列

Qt QTableWidget 列调整大小

QT QTableWidget设置单元格不可编辑

QT QTableWidget 未出现在 QTabWidget 中

调整列大小时 C++ Qt QTableWidget 项目移动