调整大小以适应 QTableView 中的行和列非常慢

Posted

技术标签:

【中文标题】调整大小以适应 QTableView 中的行和列非常慢【英文标题】:Sizing to fit rows and columns in a QTableView is very slow 【发布时间】:2011-11-20 05:53:32 【问题描述】:

我有一个带有自定义模型的 QTableView,它工作正常。但是,当我启动程序时,我希望行和列的大小适合,因为默认情况下它们占用了太多空间。我应该注意到我的表有 65k 行(只有 3 列),而且它们总是相同的。以下代码运行良好,但速度很慢。

memorListView 是一个 QTableView。在此行之前,我setModel 到我的自定义模型

memoryListView->resizeRowsToContents();
memoryListView->resizeColumnsToContents();

就像我提到的,这正是我需要的,但运行大约需要 8 秒。我认为这是因为所有数据都需要从模型中提取出来,否则视图很乐意懒惰地请求它。

我可以手动设置行和列的大小,这是我目前的解决方法,但这是一个跨平台的应用程序,我不想担心不同的小部件、文本大小、DPI 等会导致问题.我可以自动调整 one 行的大小,然后将其余行设置为该行的大小,这将是正确的,但看起来很 hacky。

我希望我只是天真地做这件事,我可以切换一些选项来让它更快。我知道所有行和列的大小都相同;我可以告诉它以某种方式使用该提示吗?

提前致谢。

【问题讨论】:

【参考方案1】:

您可以简单地使用QFontMetrics 测量文本的宽度,然后将列宽设置为它。类似的东西应该可以工作:

QFontMetrics fontMetrics(yourWidget->font());
int columnWidth = fontMetrics.width("some text");

【讨论】:

嗯,我会试一试。看起来很有希望。

以上是关于调整大小以适应 QTableView 中的行和列非常慢的主要内容,如果未能解决你的问题,请参考以下文章

在 QTableView 上单击鼠标左键获取行和列?

如何让excel表格自动适应文字长度?

Swift Playground 中的二维数组

根据谷歌电子表格中的行和列条件计算值

UICollectionViewFlowLayout 的行和列

如何将控制台窗口的大小调整为设定的行数和列数?