在QTableView中调整行和列的大小是非常慢的

Sizing to fit rows and columns in a QTableView is very slow

本文关键字:非常 QTableView 调整      更新时间:2023-10-16

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

memorListView是QTableView。在这行之前,我将setModel添加到我的自定义模型

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

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

我可以手动设置行和列的大小,这是我目前的解决方案,但这是一个跨平台的应用程序,我不想担心不同的小部件,文本大小,dpi等引起的问题。我可以自动调整一行的大小,然后将其余的设置为该行的大小,这将是正确的,但看起来非常粗糙。

我希望我只是在天真地做这个,有一些选项我可以切换,使它更快。我知道所有行和列的大小都是一样的;我能告诉它如何使用这个提示吗?

您可以简单地使用QFontMetrics测量文本的宽度,然后设置它的列宽度。像这样的代码应该可以工作:

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