QTQtablewidget 与Qtableview填充数据哪个快
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QTQtablewidget 与Qtableview填充数据哪个快相关的知识,希望对你有一定的参考价值。
最好有Qtableview.setModel的源码或者分析
或者几千条数据会不会让Qtablewidget刷新起来有明显的卡顿
Qt QTableWidget 列调整大小
【中文标题】Qt QTableWidget 列调整大小【英文标题】:Qt QTableWidget Column resizing 【发布时间】:2013-03-28 15:57:07 【问题描述】:我有一个带有 QToolbar、QWidget 和一个 QTabWidget 的 MainWindow。布局是“网格”。但是,我的窗口是可调整大小的,因为我有一个布局,所以效果很好。但是有一个问题,在我的 QTabWidget 中,我有一个 QTableWidget 有两列(布局也是“网格”)。如果我调整整个窗口的大小,QTableWidget 会调整大小,但不会调整列。
例如,每当我调整窗口大小时,我的 QTabWidget 都会调整大小,其中的 QTableWidget 也会随之调整。只有我的 QTableWidget 中的列不会。
那么...如果我的 QTableWidget 调整大小,我该如何调整它们的大小?
【问题讨论】:
【参考方案1】:-
更改
QHeaderView
的ResizeMode
。例如,使用:
horizontalHeader()->setResizeMode( 0, QHeaderView::Stretch );
调整第一列的大小,使QTableWidget
总是满的。
-
覆盖
resizeEvent
并在调整QTableWidget
的大小时自行设置每列的宽度。
【讨论】:
在哪个函数中设置horizontalheader? "表格可以有水平和垂直标题。创建标题的最简单方法是向 setHorizontalHeaderLabels() 和 setVerticalHeaderLabels() 函数提供字符串列表。"请参阅QTableWidget details 在 QT5 中:horizontalHeader()->setResizeMode(0, QHeaderView::Stretch); Qt5中没有,它是horizontalHeader()->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填充数据哪个快的主要内容,如果未能解决你的问题,请参考以下文章